#ifndef OPENSSL_NO_TLS1_3
unsigned int group_id;
PACKET key_share_list, encoded_pt;
- const unsigned char *clntcurves, *srvrcurves;
+ const uint16_t *clntcurves, *srvrcurves;
size_t clnt_num_curves, srvr_num_curves;
int group_nid, found = 0;
unsigned int curve_flags;
OPENSSL_free(s->session->ext.supportedgroups);
s->session->ext.supportedgroups = NULL;
s->session->ext.supportedgroups_len = 0;
- if (!PACKET_memdup(&supported_groups_list,
+ if (!tls1_save_u16(&supported_groups_list,
&s->session->ext.supportedgroups,
&s->session->ext.supportedgroups_len)) {
*al = SSL_AD_INTERNAL_ERROR;
unsigned int context, X509 *x,
size_t chainidx, int *al)
{
- const unsigned char *groups;
+ const uint16_t *groups;
size_t numgroups, i, first = 1;
/* s->s3->group_id is non zero if we accepted a key_share */
}
/* Copy group ID if supported */
- for (i = 0; i < numgroups; i++, groups += 2) {
- if (tls_curve_allowed(s, groups, SSL_SECOP_CURVE_SUPPORTED)) {
+ for (i = 0; i < numgroups; i++) {
+ uint16_t group = groups[i];
+
+ if (tls_curve_allowed(s, group, SSL_SECOP_CURVE_SUPPORTED)) {
if (first) {
/*
* Check if the client is already using our preferred group. If
* so we don't need to add this extension
*/
- if (s->s3->group_id == GET_GROUP_ID(groups, 0))
+ if (s->s3->group_id == group)
return EXT_RETURN_NOT_SENT;
/* Add extension header */
first = 0;
}
- if (!WPACKET_put_bytes_u16(pkt, GET_GROUP_ID(groups, 0))) {
+ if (!WPACKET_put_bytes_u16(pkt, group)) {
SSLerr(SSL_F_TLS_CONSTRUCT_STOC_SUPPORTED_GROUPS,
ERR_R_INTERNAL_ERROR);
return EXT_RETURN_FAIL;