unsigned i;
if (again == 0) {
- _gnutls_buffer_init(&buf);
-
ret = _gnutls_get_selected_cert(session, &apr_cert_list,
&apr_cert_list_length, &apr_pkey);
if (ret < 0)
}
}
- ret = _gnutls_buffer_append_prefix(&buf, 8, 0);
+ ret = _gnutls_buffer_init_handshake_mbuffer(&buf);
if (ret < 0)
return gnutls_assert_val(ret);
+ ret = _gnutls_buffer_append_prefix(&buf, 8, 0);
+ if (ret < 0) {
+ gnutls_assert();
+ goto cleanup;
+ }
+
/* mark total size */
pos_mark = buf.length;
ret = _gnutls_buffer_append_prefix(&buf, 24, 0);
_gnutls_write_uint24(buf.length-pos_mark-3, &buf.data[pos_mark]);
- bufel = _gnutls_handshake_alloc(session, buf.length);
- if (bufel == NULL) {
- gnutls_assert();
- ret = GNUTLS_E_MEMORY_ERROR;
- goto cleanup;
- }
-
- _mbuffer_set_udata_size(bufel, 0);
- ret = _mbuffer_append_data(bufel, buf.data, buf.length);
- if (ret < 0) {
- gnutls_assert();
- goto cleanup;
- }
-
- _gnutls_buffer_clear(&buf);
+ bufel = _gnutls_buffer_to_mbuffer(&buf);
}
return _gnutls_send_handshake(session, bufel, GNUTLS_HANDSHAKE_CERTIFICATE_PKT);
cleanup:
_gnutls_buffer_clear(&buf);
- _mbuffer_xfree(&bufel);
return ret;
}
const gnutls_sign_entry_st *se;
if (again == 0) {
- _gnutls_buffer_init(&buf);
-
ret = _gnutls_get_selected_cert(session, &apr_cert_list,
&apr_cert_list_length, &apr_pkey);
if (ret < 0)
if (ret < 0)
return gnutls_assert_val(ret);
- ret = _gnutls_buffer_append_data(&buf, se->aid.id, 2);
+ ret = _gnutls_buffer_init_handshake_mbuffer(&buf);
if (ret < 0) {
gnutls_assert();
goto cleanup;
}
- ret = _gnutls_buffer_append_data_prefix(&buf, 16, sig.data, sig.size);
+ ret = _gnutls_buffer_append_data(&buf, se->aid.id, 2);
if (ret < 0) {
gnutls_assert();
goto cleanup;
}
- bufel = _gnutls_handshake_alloc(session, buf.length);
- if (bufel == NULL) {
- gnutls_assert();
- ret = GNUTLS_E_MEMORY_ERROR;
- goto cleanup;
- }
-
- _mbuffer_set_udata_size(bufel, 0);
- ret = _mbuffer_append_data(bufel, buf.data, buf.length);
+ ret = _gnutls_buffer_append_data_prefix(&buf, 16, sig.data, sig.size);
if (ret < 0) {
gnutls_assert();
goto cleanup;
}
- _gnutls_buffer_clear(&buf);
+ bufel = _gnutls_buffer_to_mbuffer(&buf);
+
gnutls_free(sig.data);
}
cleanup:
gnutls_free(sig.data);
_gnutls_buffer_clear(&buf);
- _mbuffer_xfree(&bufel);
return ret;
}
gnutls_buffer_st buf;
if (again == 0) {
- _gnutls_buffer_init(&buf);
-
- ret = _gnutls_gen_hello_extensions(session, &buf, GNUTLS_EXT_FLAG_EE, GNUTLS_EXT_ANY);
+ ret = _gnutls_buffer_init_handshake_mbuffer(&buf);
if (ret < 0)
return gnutls_assert_val(ret);
- bufel = _gnutls_handshake_alloc(session, buf.length);
- if (bufel == NULL)
- return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR);
-
- _mbuffer_set_udata_size(bufel, 0);
- ret = _mbuffer_append_data(bufel, buf.data, buf.length);
+ ret = _gnutls_gen_hello_extensions(session, &buf, GNUTLS_EXT_FLAG_EE, GNUTLS_EXT_ANY);
if (ret < 0) {
gnutls_assert();
goto cleanup;
}
- _gnutls_buffer_clear(&buf);
+ bufel = _gnutls_buffer_to_mbuffer(&buf);
}
return _gnutls_send_handshake(session, bufel, GNUTLS_HANDSHAKE_ENCRYPTED_EXTENSIONS);
cleanup:
_gnutls_buffer_clear(&buf);
- _mbuffer_xfree(&bufel);
return ret;
}