-static int authz_tlsext_cb(SSL *s, unsigned short ext_type,
- const unsigned char *in,
- unsigned short inlen, int *al,
- void *arg)
- {
- if (TLSEXT_TYPE_server_authz == ext_type)
- {
- server_provided_server_authz = (memchr(in,
- TLSEXT_AUTHZDATAFORMAT_dtcp,
- inlen) != NULL);
- }
-
- if (TLSEXT_TYPE_client_authz == ext_type)
- {
- server_provided_client_authz = (memchr(in,
- TLSEXT_AUTHZDATAFORMAT_dtcp,
- inlen) != NULL);
- }
-
- return 1;
- }
-
-static int authz_tlsext_generate_cb(SSL *s, unsigned short ext_type,
- const unsigned char **out, unsigned short *outlen,
- void *arg)
- {
- if (c_auth)
- {
- if (!c_auth_require_reneg || (c_auth_require_reneg && SSL_num_renegotiations(s)))
- {
- *out = auth_ext_data;
- *outlen = 1;
- return 1;
- }
- }
- //no auth extension to send
- return -1;
- }
-
-static int suppdata_cb(SSL *s, unsigned short supp_data_type,
- const unsigned char *in,
- unsigned short inlen, int *al,
- void *arg)
- {
- if (supp_data_type == TLSEXT_SUPPLEMENTALDATATYPE_authz_data)
- {
- most_recent_supplemental_data = in;
- most_recent_supplemental_data_length = inlen;
- }
- return 1;
- }
-
-static int auth_suppdata_generate_cb(SSL *s, unsigned short supp_data_type,
- const unsigned char **out,
- unsigned short *outlen, void *arg)
- {
- unsigned char *result;
- if (c_auth && server_provided_client_authz && server_provided_server_authz)
- {
- if (!c_auth_require_reneg || (c_auth_require_reneg && SSL_num_renegotiations(s)))
- {
- result = OPENSSL_malloc(10);
- memcpy(result, "5432154321", 10);
- *out = result;
- *outlen = 10;
- return 1;
- }
- }
- //no supplemental data to send
- return -1;
- }
-