Commit a6a48e87 authored by Ben Laurie's avatar Ben Laurie
Browse files

Make it build.

parent 36086186
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -2463,7 +2463,7 @@ static int authz_tlsext_generate_cb(SSL *s, unsigned short ext_type,
			return 1;
			}
		}
	//no auth extension to send
	/* no auth extension to send */
	return -1;
	}

@@ -2496,7 +2496,7 @@ static int auth_suppdata_generate_cb(SSL *s, unsigned short supp_data_type,
			return 1;
			}
		}
	//no supplemental data to send
	/* no supplemental data to send */
	return -1;
	}

+2 −2
Original line number Diff line number Diff line
@@ -3598,7 +3598,7 @@ static int authz_tlsext_generate_cb(SSL *s, unsigned short ext_type,
			return 1;
			}
		}
	//no auth extension to send
	/* no auth extension to send */
	return -1;
	}

@@ -3631,7 +3631,7 @@ static int auth_suppdata_generate_cb(SSL *s, unsigned short supp_data_type,
			return 1;
			}
		}
	//no supplemental data to send
	/* no supplemental data to send */
	return -1;
	}
#endif
+10 −7
Original line number Diff line number Diff line
@@ -3645,7 +3645,7 @@ int tls1_send_client_supplemental_data(SSL *s, int *skip)
				SSLerr(SSL_F_TLS1_SEND_CLIENT_SUPPLEMENTAL_DATA,ERR_R_BUF_LIB);
				return 0;
			    	}
			//if first entry, write handshake message type
			/* if first entry, write handshake message type */
			if (length == 0)
				{
				if (!BUF_MEM_grow_clean(s->init_buf, 4))
@@ -3655,9 +3655,12 @@ int tls1_send_client_supplemental_data(SSL *s, int *skip)
					}
				p = (unsigned char *)s->init_buf->data;
				*(p++) = SSL3_MT_SUPPLEMENTAL_DATA;
				//update message length when all callbacks complete
				/* update message length when all
				 * callbacks complete */
				size_loc = p;
				//skip over handshake length field (3 bytes) and supp_data length field (3 bytes)
				/* skip over handshake length field (3
				 * bytes) and supp_data length field
				 * (3 bytes) */
				p += 3 + 3;
				length += 1 +3 +3;
				}
@@ -3674,9 +3677,9 @@ int tls1_send_client_supplemental_data(SSL *s, int *skip)
			}
		if (length > 0)
			{
			//write handshake length
			/* write handshake length */
			l2n3(length - 4, size_loc);
			//supp_data length
			/* supp_data length */
			l2n3(length - 7, size_loc);
			s->state = SSL3_ST_CW_SUPPLEMENTAL_DATA_B;
			s->init_num = length;
@@ -3685,7 +3688,7 @@ int tls1_send_client_supplemental_data(SSL *s, int *skip)
			}
		}

	//no supp data message sent
	/* no supp data message sent */
	*skip = 1;
	s->init_num = 0;
	s->init_off = 0;
@@ -3728,7 +3731,7 @@ int tls1_get_server_supplemental_data(SSL *s)
		{
		n2s(p, supp_data_entry_type);
		n2s(p, supp_data_entry_len);
		//if there is a callback for this supp data type, send it
		/* if there is a callback for this supp data type, send it */
		for (i=0; i < s->ctx->cli_supp_data_records_count; i++)
			{
			if (s->ctx->cli_supp_data_records[i].supp_data_type == supp_data_entry_type && s->ctx->cli_supp_data_records[i].fn1)
+16 −12
Original line number Diff line number Diff line
@@ -3734,12 +3734,13 @@ int tls1_send_server_supplemental_data(SSL *s, int *skip)
				SSLerr(SSL_F_TLS1_SEND_SERVER_SUPPLEMENTAL_DATA,ERR_R_BUF_LIB);
				return 0;
				}
			//write supp data entry...
			//if first entry, write handshake message type
			//jump back to write length at end
			/* write supp data entry...
			 * if first entry, write handshake message type
			 * jump back to write length at end */
			if (length == 0)
				{
				//1 byte message type + 3 bytes for message length
				/* 1 byte message type + 3 bytes for
				 * message length */
				if (!BUF_MEM_grow_clean(s->init_buf, 4))
					{
					SSLerr(SSL_F_TLS1_SEND_SERVER_SUPPLEMENTAL_DATA,ERR_R_BUF_LIB);
@@ -3747,13 +3748,15 @@ int tls1_send_server_supplemental_data(SSL *s, int *skip)
					}
				p = (unsigned char *)s->init_buf->data;
				*(p++) = SSL3_MT_SUPPLEMENTAL_DATA;
				//hold on to length field to update later
				/* hold on to length field to update later */
				size_loc = p;
				//skip over handshake length field (3 bytes) and supp_data length field (3 bytes)
				/* skip over handshake length field (3
				 * bytes) and supp_data length field
				 * (3 bytes) */
				p += 3 + 3;
				length += 1 +3 +3;
				}
			//2 byte supp data type + 2 byte length + outlen
			/* 2 byte supp data type + 2 byte length + outlen */
			if (!BUF_MEM_grow(s->init_buf, outlen + 4))
				{
				SSLerr(SSL_F_TLS1_SEND_SERVER_SUPPLEMENTAL_DATA,ERR_R_BUF_LIB);
@@ -3762,15 +3765,16 @@ int tls1_send_server_supplemental_data(SSL *s, int *skip)
			s2n(record->supp_data_type, p);
			s2n(outlen, p);
			memcpy(p, out, outlen);
			//update length to supp data type (2 bytes) + supp data length (2 bytes) + supp data
			/* update length to supp data type (2 bytes) +
			 * supp data length (2 bytes) + supp data */
			length += (outlen + 4);
			p += outlen;
			}
		if (length > 0)
			{
			//write handshake length
			/* write handshake length */
			l2n3(length - 4, size_loc);
			//supp_data length
			/* supp_data length */
			l2n3(length - 7, size_loc);
			s->state = SSL3_ST_SW_SUPPLEMENTAL_DATA_B;
			s->init_num = length;
@@ -3780,7 +3784,7 @@ int tls1_send_server_supplemental_data(SSL *s, int *skip)
			}
		}

	//no supp data message sent
	/* no supp data message sent */
	*skip = 1;
	s->init_num = 0;
	s->init_off = 0;
@@ -3824,7 +3828,7 @@ int tls1_get_client_supplemental_data(SSL *s)
		{
		n2s(p, supp_data_entry_type);
		n2s(p, supp_data_entry_len);
		//if there is a callback for this supp data type, send it
		/* if there is a callback for this supp data type, send it */
		for (i=0; i < s->ctx->srv_supp_data_records_count; i++)
			{
			if (s->ctx->srv_supp_data_records[i].supp_data_type == supp_data_entry_type && s->ctx->srv_supp_data_records[i].fn2)
+31 −14
Original line number Diff line number Diff line
@@ -1766,20 +1766,37 @@ bad:

	if (suppdata)
		{
		//TEST CASES
		//client and server both send and receive, verify additional arg passed back
		SSL_CTX_set_srv_supp_data(s_ctx, CUSTOM_SUPP_DATA_TYPE_0, supp_data_0_srv_first_cb, supp_data_0_srv_second_cb, s_ssl);
		SSL_CTX_set_cli_supp_data(c_ctx, CUSTOM_SUPP_DATA_TYPE_0, supp_data_0_cli_first_cb, supp_data_0_cli_second_cb, c_ssl);

		//-1 response from sending server/client doesn't receive, -1 response from sending client/server doesn't receive
		SSL_CTX_set_srv_supp_data(s_ctx, CUSTOM_SUPP_DATA_TYPE_1, supp_data_1_srv_first_cb, supp_data_1_srv_second_cb, NULL);
		SSL_CTX_set_cli_supp_data(c_ctx, CUSTOM_SUPP_DATA_TYPE_1, supp_data_1_cli_first_cb, supp_data_1_cli_second_cb, NULL);

		//null sending server/client doesn't receive, null sending client/server doesn't receive
		SSL_CTX_set_srv_supp_data(s_ctx, CUSTOM_SUPP_DATA_TYPE_2, /*supp_data_2_srv_first_cb*/NULL, supp_data_2_srv_second_cb, NULL);
		SSL_CTX_set_cli_supp_data(c_ctx, CUSTOM_SUPP_DATA_TYPE_2, supp_data_2_cli_first_cb, /*supp_data_2_cli_second_cb*/NULL, NULL);

		//alerts set to non-zero and zero return values not tested
		/* TEST CASES */
		/* client and server both send and receive, verify
		 * additional arg passed back */
		SSL_CTX_set_srv_supp_data(s_ctx, CUSTOM_SUPP_DATA_TYPE_0,
					  supp_data_0_srv_first_cb,
					  supp_data_0_srv_second_cb, s_ssl);
		SSL_CTX_set_cli_supp_data(c_ctx, CUSTOM_SUPP_DATA_TYPE_0,
					  supp_data_0_cli_first_cb,
					  supp_data_0_cli_second_cb, c_ssl);

		/* -1 response from sending server/client doesn't
                 * receive, -1 response from sending client/server
                 * doesn't receive */
		SSL_CTX_set_srv_supp_data(s_ctx, CUSTOM_SUPP_DATA_TYPE_1,
					  supp_data_1_srv_first_cb,
					  supp_data_1_srv_second_cb, NULL);
		SSL_CTX_set_cli_supp_data(c_ctx, CUSTOM_SUPP_DATA_TYPE_1,
					  supp_data_1_cli_first_cb,
					  supp_data_1_cli_second_cb, NULL);

		/* null sending server/client doesn't receive, null
		   sending client/server doesn't receive */
		SSL_CTX_set_srv_supp_data(s_ctx, CUSTOM_SUPP_DATA_TYPE_2,
					  /*supp_data_2_srv_first_cb*/NULL,
					  supp_data_2_srv_second_cb, NULL);
		SSL_CTX_set_cli_supp_data(c_ctx, CUSTOM_SUPP_DATA_TYPE_2,
					  supp_data_2_cli_first_cb,
					  /*supp_data_2_cli_second_cb*/NULL,
					  NULL);

		/* alerts set to non-zero and zero return values not tested */
		}
#ifndef OPENSSL_NO_KRB5
	if (c_ssl  &&  c_ssl->kssl_ctx)
Loading