Lines Matching full:cc

469 rng_init(br_ssl_engine_context *cc)  in rng_init()  argument
473 if (cc->rng_init_done != 0) { in rng_init()
489 h = br_multihash_getimpl(&cc->mhash, br_sha256_ID); in rng_init()
491 h = br_multihash_getimpl(&cc->mhash, br_sha384_ID); in rng_init()
493 h = br_multihash_getimpl(&cc->mhash, in rng_init()
496 br_ssl_engine_fail(cc, BR_ERR_BAD_STATE); in rng_init()
501 br_hmac_drbg_init(&cc->rng, h, NULL, 0); in rng_init()
502 cc->rng_init_done = 1; in rng_init()
508 br_ssl_engine_init_rand(br_ssl_engine_context *cc) in br_ssl_engine_init_rand() argument
510 if (!rng_init(cc)) { in br_ssl_engine_init_rand()
519 if (!cc->rng_os_rand_done) { in br_ssl_engine_init_rand()
523 if (sd != 0 && sd(&cc->rng.vtable)) { in br_ssl_engine_init_rand()
524 cc->rng_init_done = 2; in br_ssl_engine_init_rand()
526 cc->rng_os_rand_done = 1; in br_ssl_engine_init_rand()
528 if (cc->rng_init_done < 2) { in br_ssl_engine_init_rand()
529 br_ssl_engine_fail(cc, BR_ERR_NO_RANDOM); in br_ssl_engine_init_rand()
537 br_ssl_engine_inject_entropy(br_ssl_engine_context *cc, in br_ssl_engine_inject_entropy() argument
546 if (!rng_init(cc)) { in br_ssl_engine_inject_entropy()
549 br_hmac_drbg_update(&cc->rng, data, len); in br_ssl_engine_inject_entropy()
550 cc->rng_init_done = 2; in br_ssl_engine_inject_entropy()
927 clear_max_plaintext(const br_sslrec_out_clear_context *cc, in clear_max_plaintext() argument
932 (void)cc; in clear_max_plaintext()
944 clear_encrypt(br_sslrec_out_clear_context *cc, in clear_encrypt() argument
949 (void)cc; in clear_encrypt()
1020 br_ssl_engine_set_suites(br_ssl_engine_context *cc, in br_ssl_engine_set_suites() argument
1023 if ((suites_num * sizeof *suites) > sizeof cc->suites_buf) { in br_ssl_engine_set_suites()
1024 br_ssl_engine_fail(cc, BR_ERR_BAD_PARAM); in br_ssl_engine_set_suites()
1027 memcpy(cc->suites_buf, suites, suites_num * sizeof *suites); in br_ssl_engine_set_suites()
1028 cc->suites_num = suites_num; in br_ssl_engine_set_suites()
1036 jump_handshake(br_ssl_engine_context *cc, int action) in jump_handshake() argument
1053 cc->hbuf_in = recvpld_buf(cc, &hlen_in); in jump_handshake()
1054 if (cc->hbuf_in != NULL in jump_handshake()
1055 && cc->record_type_in == BR_SSL_APPLICATION_DATA) in jump_handshake()
1066 cc->saved_hbuf_out = cc->hbuf_out = sendpld_buf(cc, &hlen_out); in jump_handshake()
1067 if (cc->hbuf_out != NULL && br_ssl_engine_has_pld_to_send(cc)) { in jump_handshake()
1077 cc->hlen_in = hlen_in; in jump_handshake()
1078 cc->hlen_out = hlen_out; in jump_handshake()
1079 cc->action = action; in jump_handshake()
1080 cc->hsrun(&cc->cpu); in jump_handshake()
1081 if (br_ssl_engine_closed(cc)) { in jump_handshake()
1084 if (cc->hbuf_out != cc->saved_hbuf_out) { in jump_handshake()
1085 sendpld_ack(cc, cc->hbuf_out - cc->saved_hbuf_out); in jump_handshake()
1087 if (hlen_in != cc->hlen_in) { in jump_handshake()
1088 recvpld_ack(cc, hlen_in - cc->hlen_in); in jump_handshake()
1089 if (cc->hlen_in == 0) { in jump_handshake()
1107 br_ssl_engine_flush_record(br_ssl_engine_context *cc) in br_ssl_engine_flush_record() argument
1109 if (cc->hbuf_out != cc->saved_hbuf_out) { in br_ssl_engine_flush_record()
1110 sendpld_ack(cc, cc->hbuf_out - cc->saved_hbuf_out); in br_ssl_engine_flush_record()
1112 if (br_ssl_engine_has_pld_to_send(cc)) { in br_ssl_engine_flush_record()
1113 sendpld_flush(cc, 0); in br_ssl_engine_flush_record()
1115 cc->saved_hbuf_out = cc->hbuf_out = sendpld_buf(cc, &cc->hlen_out); in br_ssl_engine_flush_record()
1120 br_ssl_engine_sendapp_buf(const br_ssl_engine_context *cc, size_t *len) in br_ssl_engine_sendapp_buf() argument
1122 if (!(cc->application_data & 1)) { in br_ssl_engine_sendapp_buf()
1126 return sendpld_buf(cc, len); in br_ssl_engine_sendapp_buf()
1131 br_ssl_engine_sendapp_ack(br_ssl_engine_context *cc, size_t len) in br_ssl_engine_sendapp_ack() argument
1133 sendpld_ack(cc, len); in br_ssl_engine_sendapp_ack()
1138 br_ssl_engine_recvapp_buf(const br_ssl_engine_context *cc, size_t *len) in br_ssl_engine_recvapp_buf() argument
1140 if (!(cc->application_data & 1) in br_ssl_engine_recvapp_buf()
1141 || cc->record_type_in != BR_SSL_APPLICATION_DATA) in br_ssl_engine_recvapp_buf()
1146 return recvpld_buf(cc, len); in br_ssl_engine_recvapp_buf()
1151 br_ssl_engine_recvapp_ack(br_ssl_engine_context *cc, size_t len) in br_ssl_engine_recvapp_ack() argument
1153 recvpld_ack(cc, len); in br_ssl_engine_recvapp_ack()
1158 br_ssl_engine_sendrec_buf(const br_ssl_engine_context *cc, size_t *len) in br_ssl_engine_sendrec_buf() argument
1160 return sendrec_buf(cc, len); in br_ssl_engine_sendrec_buf()
1165 br_ssl_engine_sendrec_ack(br_ssl_engine_context *cc, size_t len) in br_ssl_engine_sendrec_ack() argument
1167 sendrec_ack(cc, len); in br_ssl_engine_sendrec_ack()
1168 if (len != 0 && !has_rec_tosend(cc) in br_ssl_engine_sendrec_ack()
1169 && (cc->record_type_out != BR_SSL_APPLICATION_DATA in br_ssl_engine_sendrec_ack()
1170 || (cc->application_data & 1) == 0)) in br_ssl_engine_sendrec_ack()
1172 jump_handshake(cc, 0); in br_ssl_engine_sendrec_ack()
1178 br_ssl_engine_recvrec_buf(const br_ssl_engine_context *cc, size_t *len) in br_ssl_engine_recvrec_buf() argument
1180 return recvrec_buf(cc, len); in br_ssl_engine_recvrec_buf()
1185 br_ssl_engine_recvrec_ack(br_ssl_engine_context *cc, size_t len) in br_ssl_engine_recvrec_ack() argument
1189 recvrec_ack(cc, len); in br_ssl_engine_recvrec_ack()
1190 if (br_ssl_engine_closed(cc)) { in br_ssl_engine_recvrec_ack()
1199 buf = recvpld_buf(cc, &len); in br_ssl_engine_recvrec_ack()
1201 switch (cc->record_type_in) { in br_ssl_engine_recvrec_ack()
1205 jump_handshake(cc, 0); in br_ssl_engine_recvrec_ack()
1208 if (cc->application_data == 1) { in br_ssl_engine_recvrec_ack()
1217 if (cc->application_data == 2) { in br_ssl_engine_recvrec_ack()
1218 recvpld_ack(cc, len); in br_ssl_engine_recvrec_ack()
1224 br_ssl_engine_fail(cc, BR_ERR_UNEXPECTED); in br_ssl_engine_recvrec_ack()
1232 br_ssl_engine_close(br_ssl_engine_context *cc) in br_ssl_engine_close() argument
1234 if (!br_ssl_engine_closed(cc)) { in br_ssl_engine_close()
1247 if (br_ssl_engine_recvapp_buf(cc, &len) != NULL && len != 0) { in br_ssl_engine_close()
1248 br_ssl_engine_recvapp_ack(cc, len); in br_ssl_engine_close()
1250 jump_handshake(cc, 1); in br_ssl_engine_close()
1256 br_ssl_engine_renegotiate(br_ssl_engine_context *cc) in br_ssl_engine_renegotiate() argument
1260 if (br_ssl_engine_closed(cc) || cc->reneg == 1 in br_ssl_engine_renegotiate()
1261 || (cc->flags & BR_OPT_NO_RENEGOTIATION) != 0 in br_ssl_engine_renegotiate()
1262 || br_ssl_engine_recvapp_buf(cc, &len) != NULL) in br_ssl_engine_renegotiate()
1266 jump_handshake(cc, 2); in br_ssl_engine_renegotiate()
1272 br_ssl_engine_current_state(const br_ssl_engine_context *cc) in br_ssl_engine_current_state() argument
1277 if (br_ssl_engine_closed(cc)) { in br_ssl_engine_current_state()
1282 if (br_ssl_engine_sendrec_buf(cc, &len) != NULL) { in br_ssl_engine_current_state()
1285 if (br_ssl_engine_recvrec_buf(cc, &len) != NULL) { in br_ssl_engine_current_state()
1288 if (br_ssl_engine_sendapp_buf(cc, &len) != NULL) { in br_ssl_engine_current_state()
1291 if (br_ssl_engine_recvapp_buf(cc, &len) != NULL) { in br_ssl_engine_current_state()
1299 br_ssl_engine_flush(br_ssl_engine_context *cc, int force) in br_ssl_engine_flush() argument
1301 if (!br_ssl_engine_closed(cc) && (cc->application_data & 1) != 0) { in br_ssl_engine_flush()
1302 sendpld_flush(cc, force); in br_ssl_engine_flush()
1308 br_ssl_engine_hs_reset(br_ssl_engine_context *cc, in br_ssl_engine_hs_reset() argument
1311 engine_clearbuf(cc); in br_ssl_engine_hs_reset()
1312 cc->cpu.dp = cc->dp_stack; in br_ssl_engine_hs_reset()
1313 cc->cpu.rp = cc->rp_stack; in br_ssl_engine_hs_reset()
1314 hsinit(&cc->cpu); in br_ssl_engine_hs_reset()
1315 cc->hsrun = hsrun; in br_ssl_engine_hs_reset()
1316 cc->shutdown_recv = 0; in br_ssl_engine_hs_reset()
1317 cc->application_data = 0; in br_ssl_engine_hs_reset()
1318 cc->alert = 0; in br_ssl_engine_hs_reset()
1319 jump_handshake(cc, 0); in br_ssl_engine_hs_reset()
1324 br_ssl_engine_get_PRF(br_ssl_engine_context *cc, int prf_id) in br_ssl_engine_get_PRF() argument
1326 if (cc->session.version >= BR_TLS12) { in br_ssl_engine_get_PRF()
1328 return cc->prf_sha384; in br_ssl_engine_get_PRF()
1330 return cc->prf_sha256; in br_ssl_engine_get_PRF()
1333 return cc->prf10; in br_ssl_engine_get_PRF()
1339 br_ssl_engine_compute_master(br_ssl_engine_context *cc, in br_ssl_engine_compute_master() argument
1344 { cc->client_random, sizeof cc->client_random }, in br_ssl_engine_compute_master()
1345 { cc->server_random, sizeof cc->server_random } in br_ssl_engine_compute_master()
1348 iprf = br_ssl_engine_get_PRF(cc, prf_id); in br_ssl_engine_compute_master()
1349 iprf(cc->session.master_secret, sizeof cc->session.master_secret, in br_ssl_engine_compute_master()
1357 compute_key_block(br_ssl_engine_context *cc, int prf_id, in compute_key_block() argument
1362 { cc->server_random, sizeof cc->server_random }, in compute_key_block()
1363 { cc->client_random, sizeof cc->client_random } in compute_key_block()
1366 iprf = br_ssl_engine_get_PRF(cc, prf_id); in compute_key_block()
1368 cc->session.master_secret, sizeof cc->session.master_secret, in compute_key_block()
1374 br_ssl_engine_switch_cbc_in(br_ssl_engine_context *cc, in br_ssl_engine_switch_cbc_in() argument
1383 imh = br_ssl_engine_get_hash(cc, mac_id); in br_ssl_engine_switch_cbc_in()
1390 if (cc->session.version >= BR_TLS11) { in br_ssl_engine_switch_cbc_in()
1395 compute_key_block(cc, prf_id, in br_ssl_engine_switch_cbc_in()
1409 cc->icbc_in->init(&cc->in.cbc.vtable, in br_ssl_engine_switch_cbc_in()
1412 cc->incrypt = 1; in br_ssl_engine_switch_cbc_in()
1417 br_ssl_engine_switch_cbc_out(br_ssl_engine_context *cc, in br_ssl_engine_switch_cbc_out() argument
1426 imh = br_ssl_engine_get_hash(cc, mac_id); in br_ssl_engine_switch_cbc_out()
1433 if (cc->session.version >= BR_TLS11) { in br_ssl_engine_switch_cbc_out()
1438 compute_key_block(cc, prf_id, in br_ssl_engine_switch_cbc_out()
1452 cc->icbc_out->init(&cc->out.cbc.vtable, in br_ssl_engine_switch_cbc_out()
1459 br_ssl_engine_switch_gcm_in(br_ssl_engine_context *cc, in br_ssl_engine_switch_gcm_in() argument
1466 compute_key_block(cc, prf_id, cipher_key_len + 4, kb); in br_ssl_engine_switch_gcm_in()
1474 cc->igcm_in->init(&cc->in.gcm.vtable.in, in br_ssl_engine_switch_gcm_in()
1475 bc_impl, cipher_key, cipher_key_len, cc->ighash, iv); in br_ssl_engine_switch_gcm_in()
1476 cc->incrypt = 1; in br_ssl_engine_switch_gcm_in()
1481 br_ssl_engine_switch_gcm_out(br_ssl_engine_context *cc, in br_ssl_engine_switch_gcm_out() argument
1488 compute_key_block(cc, prf_id, cipher_key_len + 4, kb); in br_ssl_engine_switch_gcm_out()
1496 cc->igcm_out->init(&cc->out.gcm.vtable.out, in br_ssl_engine_switch_gcm_out()
1497 bc_impl, cipher_key, cipher_key_len, cc->ighash, iv); in br_ssl_engine_switch_gcm_out()
1502 br_ssl_engine_switch_chapol_in(br_ssl_engine_context *cc, in br_ssl_engine_switch_chapol_in() argument
1508 compute_key_block(cc, prf_id, 44, kb); in br_ssl_engine_switch_chapol_in()
1516 cc->ichapol_in->init(&cc->in.chapol.vtable.in, in br_ssl_engine_switch_chapol_in()
1517 cc->ichacha, cc->ipoly, cipher_key, iv); in br_ssl_engine_switch_chapol_in()
1518 cc->incrypt = 1; in br_ssl_engine_switch_chapol_in()
1523 br_ssl_engine_switch_chapol_out(br_ssl_engine_context *cc, in br_ssl_engine_switch_chapol_out() argument
1529 compute_key_block(cc, prf_id, 44, kb); in br_ssl_engine_switch_chapol_out()
1537 cc->ichapol_out->init(&cc->out.chapol.vtable.out, in br_ssl_engine_switch_chapol_out()
1538 cc->ichacha, cc->ipoly, cipher_key, iv); in br_ssl_engine_switch_chapol_out()
1543 br_ssl_engine_switch_ccm_in(br_ssl_engine_context *cc, in br_ssl_engine_switch_ccm_in() argument
1551 compute_key_block(cc, prf_id, cipher_key_len + 4, kb); in br_ssl_engine_switch_ccm_in()
1559 cc->iccm_in->init(&cc->in.ccm.vtable.in, in br_ssl_engine_switch_ccm_in()
1561 cc->incrypt = 1; in br_ssl_engine_switch_ccm_in()
1566 br_ssl_engine_switch_ccm_out(br_ssl_engine_context *cc, in br_ssl_engine_switch_ccm_out() argument
1574 compute_key_block(cc, prf_id, cipher_key_len + 4, kb); in br_ssl_engine_switch_ccm_out()
1582 cc->iccm_out->init(&cc->out.ccm.vtable.out, in br_ssl_engine_switch_ccm_out()