mirror of
https://github.com/Mbed-TLS/mbedtls.git
synced 2025-08-07 06:42:56 +03:00
Flatten out mbedtls_test_ssl_endpoint_certificate structure
No behavior change. Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
This commit is contained in:
@@ -186,15 +186,6 @@ typedef struct mbedtls_test_message_socket_context {
|
|||||||
|
|
||||||
#if defined(MBEDTLS_SSL_HANDSHAKE_WITH_CERT_ENABLED)
|
#if defined(MBEDTLS_SSL_HANDSHAKE_WITH_CERT_ENABLED)
|
||||||
|
|
||||||
/*
|
|
||||||
* Structure with endpoint's certificates for SSL communication tests.
|
|
||||||
*/
|
|
||||||
typedef struct mbedtls_test_ssl_endpoint_certificate {
|
|
||||||
mbedtls_x509_crt *ca_cert;
|
|
||||||
mbedtls_x509_crt *cert;
|
|
||||||
mbedtls_pk_context *pkey;
|
|
||||||
} mbedtls_test_ssl_endpoint_certificate;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Endpoint structure for SSL communication tests.
|
* Endpoint structure for SSL communication tests.
|
||||||
*/
|
*/
|
||||||
@@ -203,7 +194,11 @@ typedef struct mbedtls_test_ssl_endpoint {
|
|||||||
mbedtls_ssl_context ssl;
|
mbedtls_ssl_context ssl;
|
||||||
mbedtls_ssl_config conf;
|
mbedtls_ssl_config conf;
|
||||||
mbedtls_test_mock_socket socket;
|
mbedtls_test_mock_socket socket;
|
||||||
mbedtls_test_ssl_endpoint_certificate cert;
|
|
||||||
|
/* Objects owned by the endpoint */
|
||||||
|
mbedtls_x509_crt *ca_chain;
|
||||||
|
mbedtls_x509_crt *cert;
|
||||||
|
mbedtls_pk_context *pkey;
|
||||||
} mbedtls_test_ssl_endpoint;
|
} mbedtls_test_ssl_endpoint;
|
||||||
|
|
||||||
#endif /* MBEDTLS_SSL_HANDSHAKE_WITH_CERT_ENABLED */
|
#endif /* MBEDTLS_SSL_HANDSHAKE_WITH_CERT_ENABLED */
|
||||||
@@ -432,8 +427,7 @@ int mbedtls_test_mock_tcp_recv_msg(void *ctx,
|
|||||||
#if defined(MBEDTLS_SSL_HANDSHAKE_WITH_CERT_ENABLED)
|
#if defined(MBEDTLS_SSL_HANDSHAKE_WITH_CERT_ENABLED)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Initializes \p ep_cert structure and assigns it to endpoint
|
* Load default CA certificates and endpoint keys into \p ep.
|
||||||
* represented by \p ep.
|
|
||||||
*
|
*
|
||||||
* \retval 0 on success, otherwise error code.
|
* \retval 0 on success, otherwise error code.
|
||||||
*/
|
*/
|
||||||
|
@@ -579,28 +579,25 @@ int mbedtls_test_mock_tcp_recv_msg(void *ctx,
|
|||||||
*/
|
*/
|
||||||
static void test_ssl_endpoint_certificate_free(mbedtls_test_ssl_endpoint *ep)
|
static void test_ssl_endpoint_certificate_free(mbedtls_test_ssl_endpoint *ep)
|
||||||
{
|
{
|
||||||
mbedtls_test_ssl_endpoint_certificate *cert = &(ep->cert);
|
if (ep->ca_chain != NULL) {
|
||||||
if (cert != NULL) {
|
mbedtls_x509_crt_free(ep->ca_chain);
|
||||||
if (cert->ca_cert != NULL) {
|
mbedtls_free(ep->ca_chain);
|
||||||
mbedtls_x509_crt_free(cert->ca_cert);
|
ep->ca_chain = NULL;
|
||||||
mbedtls_free(cert->ca_cert);
|
}
|
||||||
cert->ca_cert = NULL;
|
if (ep->cert != NULL) {
|
||||||
}
|
mbedtls_x509_crt_free(ep->cert);
|
||||||
if (cert->cert != NULL) {
|
mbedtls_free(ep->cert);
|
||||||
mbedtls_x509_crt_free(cert->cert);
|
ep->cert = NULL;
|
||||||
mbedtls_free(cert->cert);
|
}
|
||||||
cert->cert = NULL;
|
if (ep->pkey != NULL) {
|
||||||
}
|
|
||||||
if (cert->pkey != NULL) {
|
|
||||||
#if defined(MBEDTLS_USE_PSA_CRYPTO)
|
#if defined(MBEDTLS_USE_PSA_CRYPTO)
|
||||||
if (mbedtls_pk_get_type(cert->pkey) == MBEDTLS_PK_OPAQUE) {
|
if (mbedtls_pk_get_type(ep->pkey) == MBEDTLS_PK_OPAQUE) {
|
||||||
psa_destroy_key(cert->pkey->priv_id);
|
psa_destroy_key(ep->pkey->priv_id);
|
||||||
}
|
|
||||||
#endif
|
|
||||||
mbedtls_pk_free(cert->pkey);
|
|
||||||
mbedtls_free(cert->pkey);
|
|
||||||
cert->pkey = NULL;
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
mbedtls_pk_free(ep->pkey);
|
||||||
|
mbedtls_free(ep->pkey);
|
||||||
|
ep->pkey = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -612,7 +609,6 @@ int mbedtls_test_ssl_endpoint_certificate_init(mbedtls_test_ssl_endpoint *ep,
|
|||||||
int i = 0;
|
int i = 0;
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
int ok = 0;
|
int ok = 0;
|
||||||
mbedtls_test_ssl_endpoint_certificate *cert = NULL;
|
|
||||||
#if defined(MBEDTLS_USE_PSA_CRYPTO)
|
#if defined(MBEDTLS_USE_PSA_CRYPTO)
|
||||||
mbedtls_svc_key_id_t key_slot = MBEDTLS_SVC_KEY_ID_INIT;
|
mbedtls_svc_key_id_t key_slot = MBEDTLS_SVC_KEY_ID_INIT;
|
||||||
#endif
|
#endif
|
||||||
@@ -621,20 +617,19 @@ int mbedtls_test_ssl_endpoint_certificate_init(mbedtls_test_ssl_endpoint *ep,
|
|||||||
return MBEDTLS_ERR_SSL_BAD_INPUT_DATA;
|
return MBEDTLS_ERR_SSL_BAD_INPUT_DATA;
|
||||||
}
|
}
|
||||||
|
|
||||||
cert = &(ep->cert);
|
TEST_CALLOC(ep->ca_chain, 1);
|
||||||
TEST_CALLOC(cert->ca_cert, 1);
|
TEST_CALLOC(ep->cert, 1);
|
||||||
TEST_CALLOC(cert->cert, 1);
|
TEST_CALLOC(ep->pkey, 1);
|
||||||
TEST_CALLOC(cert->pkey, 1);
|
|
||||||
|
|
||||||
mbedtls_x509_crt_init(cert->ca_cert);
|
mbedtls_x509_crt_init(ep->ca_chain);
|
||||||
mbedtls_x509_crt_init(cert->cert);
|
mbedtls_x509_crt_init(ep->cert);
|
||||||
mbedtls_pk_init(cert->pkey);
|
mbedtls_pk_init(ep->pkey);
|
||||||
|
|
||||||
/* Load the trusted CA */
|
/* Load the trusted CA */
|
||||||
|
|
||||||
for (i = 0; mbedtls_test_cas_der[i] != NULL; i++) {
|
for (i = 0; mbedtls_test_cas_der[i] != NULL; i++) {
|
||||||
ret = mbedtls_x509_crt_parse_der(
|
ret = mbedtls_x509_crt_parse_der(
|
||||||
cert->ca_cert,
|
ep->ca_chain,
|
||||||
(const unsigned char *) mbedtls_test_cas_der[i],
|
(const unsigned char *) mbedtls_test_cas_der[i],
|
||||||
mbedtls_test_cas_der_len[i]);
|
mbedtls_test_cas_der_len[i]);
|
||||||
TEST_EQUAL(ret, 0);
|
TEST_EQUAL(ret, 0);
|
||||||
@@ -645,25 +640,25 @@ int mbedtls_test_ssl_endpoint_certificate_init(mbedtls_test_ssl_endpoint *ep,
|
|||||||
if (ep->conf.endpoint == MBEDTLS_SSL_IS_SERVER) {
|
if (ep->conf.endpoint == MBEDTLS_SSL_IS_SERVER) {
|
||||||
if (pk_alg == MBEDTLS_PK_RSA) {
|
if (pk_alg == MBEDTLS_PK_RSA) {
|
||||||
ret = mbedtls_x509_crt_parse(
|
ret = mbedtls_x509_crt_parse(
|
||||||
cert->cert,
|
ep->cert,
|
||||||
(const unsigned char *) mbedtls_test_srv_crt_rsa_sha256_der,
|
(const unsigned char *) mbedtls_test_srv_crt_rsa_sha256_der,
|
||||||
mbedtls_test_srv_crt_rsa_sha256_der_len);
|
mbedtls_test_srv_crt_rsa_sha256_der_len);
|
||||||
TEST_EQUAL(ret, 0);
|
TEST_EQUAL(ret, 0);
|
||||||
|
|
||||||
ret = mbedtls_pk_parse_key(
|
ret = mbedtls_pk_parse_key(
|
||||||
cert->pkey,
|
ep->pkey,
|
||||||
(const unsigned char *) mbedtls_test_srv_key_rsa_der,
|
(const unsigned char *) mbedtls_test_srv_key_rsa_der,
|
||||||
mbedtls_test_srv_key_rsa_der_len, NULL, 0);
|
mbedtls_test_srv_key_rsa_der_len, NULL, 0);
|
||||||
TEST_EQUAL(ret, 0);
|
TEST_EQUAL(ret, 0);
|
||||||
} else {
|
} else {
|
||||||
ret = mbedtls_x509_crt_parse(
|
ret = mbedtls_x509_crt_parse(
|
||||||
cert->cert,
|
ep->cert,
|
||||||
(const unsigned char *) mbedtls_test_srv_crt_ec_der,
|
(const unsigned char *) mbedtls_test_srv_crt_ec_der,
|
||||||
mbedtls_test_srv_crt_ec_der_len);
|
mbedtls_test_srv_crt_ec_der_len);
|
||||||
TEST_EQUAL(ret, 0);
|
TEST_EQUAL(ret, 0);
|
||||||
|
|
||||||
ret = mbedtls_pk_parse_key(
|
ret = mbedtls_pk_parse_key(
|
||||||
cert->pkey,
|
ep->pkey,
|
||||||
(const unsigned char *) mbedtls_test_srv_key_ec_der,
|
(const unsigned char *) mbedtls_test_srv_key_ec_der,
|
||||||
mbedtls_test_srv_key_ec_der_len, NULL, 0);
|
mbedtls_test_srv_key_ec_der_len, NULL, 0);
|
||||||
TEST_EQUAL(ret, 0);
|
TEST_EQUAL(ret, 0);
|
||||||
@@ -671,25 +666,25 @@ int mbedtls_test_ssl_endpoint_certificate_init(mbedtls_test_ssl_endpoint *ep,
|
|||||||
} else {
|
} else {
|
||||||
if (pk_alg == MBEDTLS_PK_RSA) {
|
if (pk_alg == MBEDTLS_PK_RSA) {
|
||||||
ret = mbedtls_x509_crt_parse(
|
ret = mbedtls_x509_crt_parse(
|
||||||
cert->cert,
|
ep->cert,
|
||||||
(const unsigned char *) mbedtls_test_cli_crt_rsa_der,
|
(const unsigned char *) mbedtls_test_cli_crt_rsa_der,
|
||||||
mbedtls_test_cli_crt_rsa_der_len);
|
mbedtls_test_cli_crt_rsa_der_len);
|
||||||
TEST_EQUAL(ret, 0);
|
TEST_EQUAL(ret, 0);
|
||||||
|
|
||||||
ret = mbedtls_pk_parse_key(
|
ret = mbedtls_pk_parse_key(
|
||||||
cert->pkey,
|
ep->pkey,
|
||||||
(const unsigned char *) mbedtls_test_cli_key_rsa_der,
|
(const unsigned char *) mbedtls_test_cli_key_rsa_der,
|
||||||
mbedtls_test_cli_key_rsa_der_len, NULL, 0);
|
mbedtls_test_cli_key_rsa_der_len, NULL, 0);
|
||||||
TEST_EQUAL(ret, 0);
|
TEST_EQUAL(ret, 0);
|
||||||
} else {
|
} else {
|
||||||
ret = mbedtls_x509_crt_parse(
|
ret = mbedtls_x509_crt_parse(
|
||||||
cert->cert,
|
ep->cert,
|
||||||
(const unsigned char *) mbedtls_test_cli_crt_ec_der,
|
(const unsigned char *) mbedtls_test_cli_crt_ec_der,
|
||||||
mbedtls_test_cli_crt_ec_len);
|
mbedtls_test_cli_crt_ec_len);
|
||||||
TEST_EQUAL(ret, 0);
|
TEST_EQUAL(ret, 0);
|
||||||
|
|
||||||
ret = mbedtls_pk_parse_key(
|
ret = mbedtls_pk_parse_key(
|
||||||
cert->pkey,
|
ep->pkey,
|
||||||
(const unsigned char *) mbedtls_test_cli_key_ec_der,
|
(const unsigned char *) mbedtls_test_cli_key_ec_der,
|
||||||
mbedtls_test_cli_key_ec_der_len, NULL, 0);
|
mbedtls_test_cli_key_ec_der_len, NULL, 0);
|
||||||
TEST_EQUAL(ret, 0);
|
TEST_EQUAL(ret, 0);
|
||||||
@@ -700,7 +695,7 @@ int mbedtls_test_ssl_endpoint_certificate_init(mbedtls_test_ssl_endpoint *ep,
|
|||||||
if (opaque_alg != 0) {
|
if (opaque_alg != 0) {
|
||||||
psa_key_attributes_t key_attr = PSA_KEY_ATTRIBUTES_INIT;
|
psa_key_attributes_t key_attr = PSA_KEY_ATTRIBUTES_INIT;
|
||||||
/* Use a fake key usage to get a successful initial guess for the PSA attributes. */
|
/* Use a fake key usage to get a successful initial guess for the PSA attributes. */
|
||||||
TEST_EQUAL(mbedtls_pk_get_psa_attributes(cert->pkey, PSA_KEY_USAGE_SIGN_HASH,
|
TEST_EQUAL(mbedtls_pk_get_psa_attributes(ep->pkey, PSA_KEY_USAGE_SIGN_HASH,
|
||||||
&key_attr), 0);
|
&key_attr), 0);
|
||||||
/* Then manually usage, alg and alg2 as requested by the test. */
|
/* Then manually usage, alg and alg2 as requested by the test. */
|
||||||
psa_set_key_usage_flags(&key_attr, opaque_usage);
|
psa_set_key_usage_flags(&key_attr, opaque_usage);
|
||||||
@@ -708,10 +703,10 @@ int mbedtls_test_ssl_endpoint_certificate_init(mbedtls_test_ssl_endpoint *ep,
|
|||||||
if (opaque_alg2 != PSA_ALG_NONE) {
|
if (opaque_alg2 != PSA_ALG_NONE) {
|
||||||
psa_set_key_enrollment_algorithm(&key_attr, opaque_alg2);
|
psa_set_key_enrollment_algorithm(&key_attr, opaque_alg2);
|
||||||
}
|
}
|
||||||
TEST_EQUAL(mbedtls_pk_import_into_psa(cert->pkey, &key_attr, &key_slot), 0);
|
TEST_EQUAL(mbedtls_pk_import_into_psa(ep->pkey, &key_attr, &key_slot), 0);
|
||||||
mbedtls_pk_free(cert->pkey);
|
mbedtls_pk_free(ep->pkey);
|
||||||
mbedtls_pk_init(cert->pkey);
|
mbedtls_pk_init(ep->pkey);
|
||||||
TEST_EQUAL(mbedtls_pk_setup_opaque(cert->pkey, key_slot), 0);
|
TEST_EQUAL(mbedtls_pk_setup_opaque(ep->pkey, key_slot), 0);
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
(void) opaque_alg;
|
(void) opaque_alg;
|
||||||
@@ -719,10 +714,10 @@ int mbedtls_test_ssl_endpoint_certificate_init(mbedtls_test_ssl_endpoint *ep,
|
|||||||
(void) opaque_usage;
|
(void) opaque_usage;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
mbedtls_ssl_conf_ca_chain(&(ep->conf), cert->ca_cert, NULL);
|
mbedtls_ssl_conf_ca_chain(&(ep->conf), ep->ca_chain, NULL);
|
||||||
|
|
||||||
ret = mbedtls_ssl_conf_own_cert(&(ep->conf), cert->cert,
|
ret = mbedtls_ssl_conf_own_cert(&(ep->conf), ep->cert,
|
||||||
cert->pkey);
|
ep->pkey);
|
||||||
TEST_EQUAL(ret, 0);
|
TEST_EQUAL(ret, 0);
|
||||||
TEST_ASSERT(ep->conf.key_cert != NULL);
|
TEST_ASSERT(ep->conf.key_cert != NULL);
|
||||||
|
|
||||||
@@ -730,8 +725,8 @@ int mbedtls_test_ssl_endpoint_certificate_init(mbedtls_test_ssl_endpoint *ep,
|
|||||||
TEST_EQUAL(ret, 0);
|
TEST_EQUAL(ret, 0);
|
||||||
TEST_ASSERT(ep->conf.key_cert == NULL);
|
TEST_ASSERT(ep->conf.key_cert == NULL);
|
||||||
|
|
||||||
ret = mbedtls_ssl_conf_own_cert(&(ep->conf), cert->cert,
|
ret = mbedtls_ssl_conf_own_cert(&(ep->conf), ep->cert,
|
||||||
cert->pkey);
|
ep->pkey);
|
||||||
TEST_EQUAL(ret, 0);
|
TEST_EQUAL(ret, 0);
|
||||||
|
|
||||||
ok = 1;
|
ok = 1;
|
||||||
|
Reference in New Issue
Block a user