…lines 1–292 unchanged (292 lines)
293 BIO *in = NULL;
294 int rv = 0;
295 OSSL_LIB_CTX *libctx = NULL;
296 const char *propq = NULL;
297
298 s = SSL_CONNECTION_FROM_SSL(ssl);
299 if (s == NULL || ec == NULL || eclen == NULL
300 || s->ext.ech.returned_len > INT_MAX) {
301 ERR_raise(ERR_LIB_SSL, ERR_R_PASSED_INVALID_ARGUMENT);
302 goto err;
303 }
304 if (s->ext.ech.returned == NULL) {
305 *ec = NULL;
306 *eclen = 0;
307 return 1;
308 }
309 /*
…lines 310–315 unchanged (6 lines)
316 */
317 if (s->ext.ech.es != NULL) {
318 libctx = s->ext.ech.es->libctx;
319 propq = s->ext.ech.es->propq;
320 }
321 if ((in = BIO_new(BIO_s_mem())) == NULL
322 || BIO_write(in, s->ext.ech.returned, (int)s->ext.ech.returned_len) <= 0
323 || (ve = OSSL_ECHSTORE_new(libctx, propq)) == NULL) {
324 ERR_raise(ERR_LIB_SSL, ERR_R_INTERNAL_ERROR);
325 goto err;
326 }
327 if (OSSL_ECHSTORE_read_echconfiglist(ve, in) != 1) {
328 ERR_raise(ERR_LIB_SSL, ERR_R_INTERNAL_ERROR);
…lines 329–354 unchanged (26 lines)
355 }
356 OPENSSL_free(ctx->ext.ech.alpn_outer);
357 ctx->ext.ech.alpn_outer = NULL;
358 if (protos == NULL)
359 return 1;
360 if (protos_len == 0) {
361 ERR_raise(ERR_LIB_SSL, ERR_R_PASSED_INVALID_ARGUMENT);
362 return 0;
363 }
364 ctx->ext.ech.alpn_outer = OPENSSL_memdup(protos, protos_len);
365 if (ctx->ext.ech.alpn_outer == NULL)
366 return 0;
367 ctx->ext.ech.alpn_outer_len = protos_len;
…lines 368–412 unchanged (45 lines)
413 }
414 if (ecl == NULL) {
415 OSSL_ECHSTORE_free(s->ext.ech.es);
416 s->ext.ech.es = NULL;
417 return 1;
418 }
419 if (ecl_len == 0 || ecl_len > INT_MAX) {
420 ERR_raise(ERR_LIB_SSL, ERR_R_PASSED_INVALID_ARGUMENT);
421 goto err;
422 }
423 if ((es_in = BIO_new_mem_buf(ecl, (int)ecl_len)) == NULL
424 || (es = OSSL_ECHSTORE_new(NULL, NULL)) == NULL
425 || OSSL_ECHSTORE_read_echconfiglist(es, es_in) != 1
426 || SSL_set1_echstore(ssl, es) != 1) {
427 ERR_raise(ERR_LIB_SSL, ERR_R_INTERNAL_ERROR);
428 goto err;
429 }
…lines 430–436 unchanged (7 lines)