| lh | 9ed821d | 2023-04-07 01:36:19 -0700 | [diff] [blame] | 1 | /* | 
|  | 2 | * Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. | 
|  | 3 | * | 
|  | 4 | * Licensed under the OpenSSL license (the "License").  You may not use | 
|  | 5 | * this file except in compliance with the License.  You can obtain a copy | 
|  | 6 | * in the file LICENSE in the source distribution or at | 
|  | 7 | * https://www.openssl.org/source/license.html | 
|  | 8 | */ | 
|  | 9 |  | 
|  | 10 | #ifndef OSSL_TEST_HANDSHAKE_HELPER_H | 
|  | 11 | #define OSSL_TEST_HANDSHAKE_HELPER_H | 
|  | 12 |  | 
|  | 13 | #include "ssl_test_ctx.h" | 
|  | 14 |  | 
|  | 15 | typedef struct handshake_result { | 
|  | 16 | ssl_test_result_t result; | 
|  | 17 | /* These alerts are in the 2-byte format returned by the info_callback. */ | 
|  | 18 | /* (Latest) alert sent by the client; 0 if no alert. */ | 
|  | 19 | int client_alert_sent; | 
|  | 20 | /* Number of fatal or close_notify alerts sent. */ | 
|  | 21 | int client_num_fatal_alerts_sent; | 
|  | 22 | /* (Latest) alert received by the server; 0 if no alert. */ | 
|  | 23 | int client_alert_received; | 
|  | 24 | /* (Latest) alert sent by the server; 0 if no alert. */ | 
|  | 25 | int server_alert_sent; | 
|  | 26 | /* Number of fatal or close_notify alerts sent. */ | 
|  | 27 | int server_num_fatal_alerts_sent; | 
|  | 28 | /* (Latest) alert received by the client; 0 if no alert. */ | 
|  | 29 | int server_alert_received; | 
|  | 30 | /* Negotiated protocol. On success, these should always match. */ | 
|  | 31 | int server_protocol; | 
|  | 32 | int client_protocol; | 
|  | 33 | /* Server connection */ | 
|  | 34 | ssl_servername_t servername; | 
|  | 35 | /* Session ticket status */ | 
|  | 36 | ssl_session_ticket_t session_ticket; | 
|  | 37 | int compression; | 
|  | 38 | /* Was this called on the second context? */ | 
|  | 39 | int session_ticket_do_not_call; | 
|  | 40 | char *client_npn_negotiated; | 
|  | 41 | char *server_npn_negotiated; | 
|  | 42 | char *client_alpn_negotiated; | 
|  | 43 | char *server_alpn_negotiated; | 
|  | 44 | /* Was the handshake resumed? */ | 
|  | 45 | int client_resumed; | 
|  | 46 | int server_resumed; | 
|  | 47 | /* Temporary key type */ | 
|  | 48 | int tmp_key_type; | 
|  | 49 | /* server certificate key type */ | 
|  | 50 | int server_cert_type; | 
|  | 51 | /* server signing hash */ | 
|  | 52 | int server_sign_hash; | 
|  | 53 | /* server signature type */ | 
|  | 54 | int server_sign_type; | 
|  | 55 | /* server CA names */ | 
|  | 56 | STACK_OF(X509_NAME) *server_ca_names; | 
|  | 57 | /* client certificate key type */ | 
|  | 58 | int client_cert_type; | 
|  | 59 | /* client signing hash */ | 
|  | 60 | int client_sign_hash; | 
|  | 61 | /* client signature type */ | 
|  | 62 | int client_sign_type; | 
|  | 63 | /* Client CA names */ | 
|  | 64 | STACK_OF(X509_NAME) *client_ca_names; | 
|  | 65 | /* Session id status */ | 
|  | 66 | ssl_session_id_t session_id; | 
|  | 67 | char *cipher; | 
|  | 68 | /* session ticket application data */ | 
|  | 69 | char *result_session_ticket_app_data; | 
|  | 70 | } HANDSHAKE_RESULT; | 
|  | 71 |  | 
|  | 72 | HANDSHAKE_RESULT *HANDSHAKE_RESULT_new(void); | 
|  | 73 | void HANDSHAKE_RESULT_free(HANDSHAKE_RESULT *result); | 
|  | 74 |  | 
|  | 75 | /* Do a handshake and report some information about the result. */ | 
|  | 76 | HANDSHAKE_RESULT *do_handshake(SSL_CTX *server_ctx, SSL_CTX *server2_ctx, | 
|  | 77 | SSL_CTX *client_ctx, SSL_CTX *resume_server_ctx, | 
|  | 78 | SSL_CTX *resume_client_ctx, | 
|  | 79 | const SSL_TEST_CTX *test_ctx); | 
|  | 80 |  | 
|  | 81 | #endif  /* OSSL_TEST_HANDSHAKE_HELPER_H */ |