Lines Matching +full:y +full:- +full:rp
8 uint32_t *rp; member
19 unsigned y; in t0_parse7E_unsigned() local
21 y = *(*p) ++; in t0_parse7E_unsigned()
22 x = (x << 7) | (uint32_t)(y & 0x7F); in t0_parse7E_unsigned()
23 if (y < 0x80) { in t0_parse7E_unsigned()
36 x = (uint32_t)-neg; in t0_parse7E_signed()
38 unsigned y; in t0_parse7E_signed() local
40 y = *(*p) ++; in t0_parse7E_signed()
41 x = (x << 7) | (uint32_t)(y & 0x7F); in t0_parse7E_signed()
42 if (y < 0x80) { in t0_parse7E_signed()
44 return -(int32_t)~x - 1; in t0_parse7E_signed()
78 #define ENG ((br_ssl_engine_context *)(void *)((unsigned char *)t0ctx - offsetof(br_ssl_engine_con…
95 * Decrypt the pre-master secret (RSA key exchange).
107 x = (*ctx->policy_vtable)->do_keyx(ctx->policy_vtable, epms, &len); in do_rsa_decrypt()
116 br_enc16be(epms, ctx->client_max_version); in do_rsa_decrypt()
120 * decryption failed. Note that we use a constant-time conditional in do_rsa_decrypt()
123 br_hmac_drbg_generate(&ctx->eng.rng, rpms, sizeof rpms); in do_rsa_decrypt()
129 br_ssl_engine_compute_master(&ctx->eng, prf_id, epms, 48); in do_rsa_decrypt()
132 * Clear the pre-master secret from RAM: it is normally a buffer in do_rsa_decrypt()
133 * in the context, hence potentially long-lived. in do_rsa_decrypt()
154 * decryption failed. Note that we use a constant-time conditional in ecdh_common()
157 br_hmac_drbg_generate(&ctx->eng.rng, rpms, xcoor_len); in ecdh_common()
163 br_ssl_engine_compute_master(&ctx->eng, prf_id, xcoor, xcoor_len); in ecdh_common()
166 * Clear the pre-master secret from RAM: it is normally a buffer in ecdh_common()
167 * in the context, hence potentially long-lived. in ecdh_common()
184 x = (*ctx->policy_vtable)->do_keyx(ctx->policy_vtable, in do_ecdh()
203 xc = ctx->eng.x509ctx; in do_static_ecdh()
204 pk = (*xc)->get_pkey(xc, NULL); in do_static_ecdh()
205 cpoint_len = pk->key.ec.qlen; in do_static_ecdh()
214 memcpy(cpoint, pk->key.ec.q, cpoint_len); in do_static_ecdh()
228 hf = br_multihash_getimpl(&ctx->eng.mhash, br_md5_ID); in hash_data()
232 hf->init(&hc.vtable); in hash_data()
233 hf->update(&hc.vtable, src, len); in hash_data()
234 hf->out(&hc.vtable, tmp); in hash_data()
235 hf = br_multihash_getimpl(&ctx->eng.mhash, br_sha1_ID); in hash_data()
239 hf->init(&hc.vtable); in hash_data()
240 hf->update(&hc.vtable, src, len); in hash_data()
241 hf->out(&hc.vtable, tmp + 16); in hash_data()
245 hf = br_multihash_getimpl(&ctx->eng.mhash, hash_id); in hash_data()
249 hf->init(&hc.vtable); in hash_data()
250 hf->update(&hc.vtable, src, len); in hash_data()
251 hf->out(&hc.vtable, dst); in hash_data()
252 return (hf->desc >> BR_HASHDESC_OUT_OFF) & BR_HASHDESC_OUT_MASK; in hash_data()
259 * signature length (in bytes), or -x on error (with x being an error
272 if (!((ctx->eng.iec->supported_curves >> curve) & 1)) { in do_ecdhe_part1()
273 return -BR_ERR_INVALID_ALGORITHM; in do_ecdhe_part1()
275 ctx->eng.ecdhe_curve = curve; in do_ecdhe_part1()
278 * Generate our private key. We need a non-zero random value in do_ecdhe_part1()
285 order = ctx->eng.iec->order(curve, &olen); in do_ecdhe_part1()
290 br_hmac_drbg_generate(&ctx->eng.rng, ctx->ecdhe_key, olen); in do_ecdhe_part1()
291 ctx->ecdhe_key[0] &= mask; in do_ecdhe_part1()
292 ctx->ecdhe_key[olen - 1] |= 0x01; in do_ecdhe_part1()
293 ctx->ecdhe_key_len = olen; in do_ecdhe_part1()
298 glen = ctx->eng.iec->mulgen(ctx->eng.ecdhe_point, in do_ecdhe_part1()
299 ctx->ecdhe_key, olen, curve); in do_ecdhe_part1()
300 ctx->eng.ecdhe_point_len = glen; in do_ecdhe_part1()
305 memcpy(ctx->eng.pad, ctx->eng.client_random, 32); in do_ecdhe_part1()
306 memcpy(ctx->eng.pad + 32, ctx->eng.server_random, 32); in do_ecdhe_part1()
307 ctx->eng.pad[64 + 0] = 0x03; in do_ecdhe_part1()
308 ctx->eng.pad[64 + 1] = 0x00; in do_ecdhe_part1()
309 ctx->eng.pad[64 + 2] = curve; in do_ecdhe_part1()
310 ctx->eng.pad[64 + 3] = ctx->eng.ecdhe_point_len; in do_ecdhe_part1()
311 memcpy(ctx->eng.pad + 64 + 4, in do_ecdhe_part1()
312 ctx->eng.ecdhe_point, ctx->eng.ecdhe_point_len); in do_ecdhe_part1()
313 hv_len = 64 + 4 + ctx->eng.ecdhe_point_len; in do_ecdhe_part1()
314 algo_id = ctx->sign_hash_id; in do_ecdhe_part1()
316 hv_len = hash_data(ctx, ctx->eng.pad, algo_id & 0xFF, in do_ecdhe_part1()
317 ctx->eng.pad, hv_len); in do_ecdhe_part1()
319 return -BR_ERR_INVALID_ALGORITHM; in do_ecdhe_part1()
323 sig_len = (*ctx->policy_vtable)->do_sign(ctx->policy_vtable, in do_ecdhe_part1()
324 algo_id, ctx->eng.pad, hv_len, sizeof ctx->eng.pad); in do_ecdhe_part1()
325 return sig_len ? (int)sig_len : -BR_ERR_INVALID_ALGORITHM; in do_ecdhe_part1()
340 curve = ctx->eng.ecdhe_curve; in do_ecdhe_part2()
345 ctl = ctx->eng.iec->mul(cpoint, cpoint_len, in do_ecdhe_part2()
346 ctx->ecdhe_key, ctx->ecdhe_key_len, curve); in do_ecdhe_part2()
347 xoff = ctx->eng.iec->xoff(curve, &xlen); in do_ecdhe_part2()
355 memset(ctx->ecdhe_key, 0, ctx->ecdhe_key_len); in do_ecdhe_part2()
361 * Order is MD5, SHA-1, SHA-224, SHA-256, SHA-384, SHA-512; last value
399 * success, or a non-zero error code. Lack of implementation of the
411 id = ctx->hash_CV_id; in verify_CV_sig()
412 xc = ctx->eng.x509ctx; in verify_CV_sig()
413 pk = (*xc)->get_pkey(xc, NULL); in verify_CV_sig()
414 if (pk->key_type == BR_KEYTYPE_RSA) { in verify_CV_sig()
421 hash_oid = HASH_OID[id - 2]; in verify_CV_sig()
423 if (ctx->eng.irsavrfy == 0) { in verify_CV_sig()
426 if (!ctx->eng.irsavrfy(ctx->eng.pad, sig_len, in verify_CV_sig()
427 hash_oid, ctx->hash_CV_len, &pk->key.rsa, tmp) in verify_CV_sig()
428 || memcmp(tmp, ctx->hash_CV, ctx->hash_CV_len) != 0) in verify_CV_sig()
433 if (ctx->eng.iecdsa == 0) { in verify_CV_sig()
436 if (!ctx->eng.iecdsa(ctx->eng.iec, in verify_CV_sig()
437 ctx->hash_CV, ctx->hash_CV_len, in verify_CV_sig()
438 &pk->key.ec, ctx->eng.pad, sig_len)) in verify_CV_sig()
932 #define T0_ENTER(ip, rp, slot) do { \ argument
935 t0_newip = &t0_codeblock[t0_caddr[(slot) - T0_INTERPRETED]]; \
937 (rp) += t0_lnum; \
938 *((rp) ++) = (uint32_t)((ip) - &t0_codeblock[0]) + (t0_lnum << 16); \
947 t0ctx->ip = &t0_codeblock[0]; \
948 T0_ENTER(t0ctx->ip, t0ctx->rp, slot); \
958 uint32_t *dp, *rp; in br_ssl_hs_server_run() local
961 #define T0_LOCAL(x) (*(rp - 2 - (x))) in br_ssl_hs_server_run()
962 #define T0_POP() (*-- dp) in br_ssl_hs_server_run()
963 #define T0_POPi() (*(int32_t *)(-- dp)) in br_ssl_hs_server_run()
964 #define T0_PEEK(x) (*(dp - 1 - (x))) in br_ssl_hs_server_run()
965 #define T0_PEEKi(x) (*(int32_t *)(dp - 1 - (x))) in br_ssl_hs_server_run()
968 #define T0_RPOP() (*-- rp) in br_ssl_hs_server_run()
969 #define T0_RPOPi() (*(int32_t *)(-- rp)) in br_ssl_hs_server_run()
970 #define T0_RPUSH(v) do { *rp = (v); rp ++; } while (0) in br_ssl_hs_server_run()
971 #define T0_RPUSHi(v) do { *(int32_t *)rp = (v); rp ++; } while (0) in br_ssl_hs_server_run()
974 uint32_t t0tmp = *(dp - 1 - t0len); \ in br_ssl_hs_server_run()
975 memmove(dp - t0len - 1, dp - t0len, t0len * sizeof *dp); \ in br_ssl_hs_server_run()
976 *(dp - 1) = t0tmp; \ in br_ssl_hs_server_run()
979 uint32_t t0tmp = *(dp - 2); \ in br_ssl_hs_server_run()
980 *(dp - 2) = *(dp - 1); \ in br_ssl_hs_server_run()
981 *(dp - 1) = t0tmp; \ in br_ssl_hs_server_run()
984 uint32_t t0tmp = *(dp - 3); \ in br_ssl_hs_server_run()
985 *(dp - 3) = *(dp - 2); \ in br_ssl_hs_server_run()
986 *(dp - 2) = *(dp - 1); \ in br_ssl_hs_server_run()
987 *(dp - 1) = t0tmp; \ in br_ssl_hs_server_run()
990 uint32_t t0tmp = *(dp - 1); \ in br_ssl_hs_server_run()
991 *(dp - 1) = *(dp - 2); \ in br_ssl_hs_server_run()
992 *(dp - 2) = *(dp - 3); \ in br_ssl_hs_server_run()
993 *(dp - 3) = t0tmp; \ in br_ssl_hs_server_run()
1004 dp = ((t0_context *)t0ctx)->dp; in br_ssl_hs_server_run()
1005 rp = ((t0_context *)t0ctx)->rp; in br_ssl_hs_server_run()
1006 ip = ((t0_context *)t0ctx)->ip; in br_ssl_hs_server_run()
1019 rp -= (t0x >> 16); in br_ssl_hs_server_run()
1071 /* - */ in br_ssl_hs_server_run()
1075 T0_PUSH(a - b); in br_ssl_hs_server_run()
1080 /* -rot */ in br_ssl_hs_server_run()
1089 T0_PUSH(-(uint32_t)(a < b)); in br_ssl_hs_server_run()
1107 T0_PUSH(-(uint32_t)(a <= b)); in br_ssl_hs_server_run()
1116 T0_PUSH(-(uint32_t)(a != b)); in br_ssl_hs_server_run()
1125 T0_PUSH(-(uint32_t)(a == b)); in br_ssl_hs_server_run()
1134 T0_PUSH(-(uint32_t)(a > b)); in br_ssl_hs_server_run()
1143 T0_PUSH(-(uint32_t)(a >= b)); in br_ssl_hs_server_run()
1166 /* begin-cert */ in br_ssl_hs_server_run()
1168 if (ENG->chain_len == 0) { in br_ssl_hs_server_run()
1169 T0_PUSHi(-1); in br_ssl_hs_server_run()
1171 ENG->cert_cur = ENG->chain->data; in br_ssl_hs_server_run()
1172 ENG->cert_len = ENG->chain->data_len; in br_ssl_hs_server_run()
1173 ENG->chain ++; in br_ssl_hs_server_run()
1174 ENG->chain_len --; in br_ssl_hs_server_run()
1175 T0_PUSH(ENG->cert_len); in br_ssl_hs_server_run()
1181 /* begin-ta-name */ in br_ssl_hs_server_run()
1184 if (CTX->cur_dn_index >= CTX->num_tas) { in br_ssl_hs_server_run()
1185 T0_PUSHi(-1); in br_ssl_hs_server_run()
1187 if (CTX->ta_names == NULL) { in br_ssl_hs_server_run()
1188 dn = &CTX->tas[CTX->cur_dn_index].dn; in br_ssl_hs_server_run()
1190 dn = &CTX->ta_names[CTX->cur_dn_index]; in br_ssl_hs_server_run()
1192 CTX->cur_dn_index ++; in br_ssl_hs_server_run()
1193 CTX->cur_dn = dn->data; in br_ssl_hs_server_run()
1194 CTX->cur_dn_len = dn->len; in br_ssl_hs_server_run()
1195 T0_PUSH(CTX->cur_dn_len); in br_ssl_hs_server_run()
1201 /* begin-ta-name-list */ in br_ssl_hs_server_run()
1203 CTX->cur_dn_index = 0; in br_ssl_hs_server_run()
1217 /* call-policy-handler */ in br_ssl_hs_server_run()
1222 x = (*CTX->policy_vtable)->choose( in br_ssl_hs_server_run()
1223 CTX->policy_vtable, CTX, &choices); in br_ssl_hs_server_run()
1224 ENG->session.cipher_suite = choices.cipher_suite; in br_ssl_hs_server_run()
1225 CTX->sign_hash_id = choices.algo_id; in br_ssl_hs_server_run()
1226 ENG->chain = choices.chain; in br_ssl_hs_server_run()
1227 ENG->chain_len = choices.chain_len; in br_ssl_hs_server_run()
1228 T0_PUSHi(-(x != 0)); in br_ssl_hs_server_run()
1233 /* can-output? */ in br_ssl_hs_server_run()
1235 T0_PUSHi(-(ENG->hlen_out > 0)); in br_ssl_hs_server_run()
1240 /* check-resume */ in br_ssl_hs_server_run()
1242 if (ENG->session.session_id_len == 32 in br_ssl_hs_server_run()
1243 && CTX->cache_vtable != NULL && (*CTX->cache_vtable)->load( in br_ssl_hs_server_run()
1244 CTX->cache_vtable, CTX, &ENG->session)) in br_ssl_hs_server_run()
1246 T0_PUSHi(-1); in br_ssl_hs_server_run()
1259 /* compute-Finished-inner */ in br_ssl_hs_server_run()
1268 if (ENG->session.version >= BR_TLS12) { in br_ssl_hs_server_run()
1269 seed.len = br_multihash_out(&ENG->mhash, prf_id, tmp); in br_ssl_hs_server_run()
1271 br_multihash_out(&ENG->mhash, br_md5_ID, tmp); in br_ssl_hs_server_run()
1272 br_multihash_out(&ENG->mhash, br_sha1_ID, tmp + 16); in br_ssl_hs_server_run()
1275 prf(ENG->pad, 12, ENG->session.master_secret, in br_ssl_hs_server_run()
1276 sizeof ENG->session.master_secret, in br_ssl_hs_server_run()
1283 /* compute-hash-CV */ in br_ssl_hs_server_run()
1288 br_multihash_out(&ENG->mhash, i, in br_ssl_hs_server_run()
1289 ENG->pad + HASH_PAD_OFF[i - 1]); in br_ssl_hs_server_run()
1295 /* copy-cert-chunk */ in br_ssl_hs_server_run()
1299 clen = ENG->cert_len; in br_ssl_hs_server_run()
1300 if (clen > sizeof ENG->pad) { in br_ssl_hs_server_run()
1301 clen = sizeof ENG->pad; in br_ssl_hs_server_run()
1303 memcpy(ENG->pad, ENG->cert_cur, clen); in br_ssl_hs_server_run()
1304 ENG->cert_cur += clen; in br_ssl_hs_server_run()
1305 ENG->cert_len -= clen; in br_ssl_hs_server_run()
1311 /* copy-dn-chunk */ in br_ssl_hs_server_run()
1315 clen = CTX->cur_dn_len; in br_ssl_hs_server_run()
1316 if (clen > sizeof ENG->pad) { in br_ssl_hs_server_run()
1317 clen = sizeof ENG->pad; in br_ssl_hs_server_run()
1319 memcpy(ENG->pad, CTX->cur_dn, clen); in br_ssl_hs_server_run()
1320 CTX->cur_dn += clen; in br_ssl_hs_server_run()
1321 CTX->cur_dn_len -= clen; in br_ssl_hs_server_run()
1327 /* copy-hash-CV */ in br_ssl_hs_server_run()
1336 if (br_multihash_getimpl(&ENG->mhash, id) == 0) { in br_ssl_hs_server_run()
1340 off = HASH_PAD_OFF[id - 1]; in br_ssl_hs_server_run()
1341 len = HASH_PAD_OFF[id] - off; in br_ssl_hs_server_run()
1343 memcpy(CTX->hash_CV, ENG->pad + off, len); in br_ssl_hs_server_run()
1344 CTX->hash_CV_len = len; in br_ssl_hs_server_run()
1345 CTX->hash_CV_id = id; in br_ssl_hs_server_run()
1346 T0_PUSHi(-1); in br_ssl_hs_server_run()
1351 /* copy-protocol-name */ in br_ssl_hs_server_run()
1354 size_t len = strlen(ENG->protocol_names[idx]); in br_ssl_hs_server_run()
1355 memcpy(ENG->pad, ENG->protocol_names[idx], len); in br_ssl_hs_server_run()
1361 /* data-get8 */ in br_ssl_hs_server_run()
1369 /* discard-input */ in br_ssl_hs_server_run()
1371 ENG->hlen_in = 0; in br_ssl_hs_server_run()
1376 /* do-ecdh */ in br_ssl_hs_server_run()
1380 do_ecdh(CTX, prf_id, ENG->pad, len); in br_ssl_hs_server_run()
1385 /* do-ecdhe-part1 */ in br_ssl_hs_server_run()
1393 /* do-ecdhe-part2 */ in br_ssl_hs_server_run()
1397 do_ecdhe_part2(CTX, prf_id, ENG->pad, len); in br_ssl_hs_server_run()
1402 /* do-rsa-decrypt */ in br_ssl_hs_server_run()
1406 do_rsa_decrypt(CTX, prf_id, ENG->pad, len); in br_ssl_hs_server_run()
1411 /* do-static-ecdh */ in br_ssl_hs_server_run()
1436 /* flush-record */ in br_ssl_hs_server_run()
1443 /* get-key-type-usages */ in br_ssl_hs_server_run()
1449 xc = *(ENG->x509ctx); in br_ssl_hs_server_run()
1450 pk = xc->get_pkey(ENG->x509ctx, &usages); in br_ssl_hs_server_run()
1454 T0_PUSH(pk->key_type | usages); in br_ssl_hs_server_run()
1484 /* has-input? */ in br_ssl_hs_server_run()
1486 T0_PUSHi(-(ENG->hlen_in != 0)); in br_ssl_hs_server_run()
1497 T0_PUSH((uint32_t)-(x == 0)); in br_ssl_hs_server_run()
1516 br_hmac_drbg_generate(&ENG->rng, addr, len); in br_ssl_hs_server_run()
1521 /* more-incoming-bytes? */ in br_ssl_hs_server_run()
1523 T0_PUSHi(ENG->hlen_in != 0 || !br_ssl_engine_recvrec_finished(ENG)); in br_ssl_hs_server_run()
1528 /* multihash-init */ in br_ssl_hs_server_run()
1530 br_multihash_init(&ENG->mhash); in br_ssl_hs_server_run()
1538 T0_PUSH(-a); in br_ssl_hs_server_run()
1570 /* read-chunk-native */ in br_ssl_hs_server_run()
1572 size_t clen = ENG->hlen_in; in br_ssl_hs_server_run()
1581 memcpy((unsigned char *)ENG + addr, ENG->hbuf_in, clen); in br_ssl_hs_server_run()
1582 if (ENG->record_type_in == BR_SSL_HANDSHAKE) { in br_ssl_hs_server_run()
1583 br_multihash_update(&ENG->mhash, ENG->hbuf_in, clen); in br_ssl_hs_server_run()
1586 T0_PUSH(len - (uint32_t)clen); in br_ssl_hs_server_run()
1587 ENG->hbuf_in += clen; in br_ssl_hs_server_run()
1588 ENG->hlen_in -= clen; in br_ssl_hs_server_run()
1594 /* read8-native */ in br_ssl_hs_server_run()
1596 if (ENG->hlen_in > 0) { in br_ssl_hs_server_run()
1599 x = *ENG->hbuf_in ++; in br_ssl_hs_server_run()
1600 if (ENG->record_type_in == BR_SSL_HANDSHAKE) { in br_ssl_hs_server_run()
1601 br_multihash_update(&ENG->mhash, &x, 1); in br_ssl_hs_server_run()
1604 ENG->hlen_in --; in br_ssl_hs_server_run()
1606 T0_PUSHi(-1); in br_ssl_hs_server_run()
1612 /* save-session */ in br_ssl_hs_server_run()
1614 if (CTX->cache_vtable != NULL) { in br_ssl_hs_server_run()
1615 (*CTX->cache_vtable)->save( in br_ssl_hs_server_run()
1616 CTX->cache_vtable, CTX, &ENG->session); in br_ssl_hs_server_run()
1622 /* set-max-frag-len */ in br_ssl_hs_server_run()
1634 if (ENG->hlen_out > max_frag_len) { in br_ssl_hs_server_run()
1635 ENG->hlen_out = max_frag_len; in br_ssl_hs_server_run()
1665 /* supported-curves */ in br_ssl_hs_server_run()
1667 uint32_t x = ENG->iec == NULL ? 0 : ENG->iec->supported_curves; in br_ssl_hs_server_run()
1673 /* supported-hash-functions */ in br_ssl_hs_server_run()
1681 if (br_multihash_getimpl(&ENG->mhash, i)) { in br_ssl_hs_server_run()
1692 /* supports-ecdsa? */ in br_ssl_hs_server_run()
1694 T0_PUSHi(-(ENG->iecdsa != 0)); in br_ssl_hs_server_run()
1699 /* supports-rsa-sign? */ in br_ssl_hs_server_run()
1701 T0_PUSHi(-(ENG->irsavrfy != 0)); in br_ssl_hs_server_run()
1711 /* switch-aesccm-in */ in br_ssl_hs_server_run()
1721 ENG->iaes_ctrcbc, cipher_key_len, tag_len); in br_ssl_hs_server_run()
1726 /* switch-aesccm-out */ in br_ssl_hs_server_run()
1736 ENG->iaes_ctrcbc, cipher_key_len, tag_len); in br_ssl_hs_server_run()
1741 /* switch-aesgcm-in */ in br_ssl_hs_server_run()
1750 ENG->iaes_ctr, cipher_key_len); in br_ssl_hs_server_run()
1755 /* switch-aesgcm-out */ in br_ssl_hs_server_run()
1764 ENG->iaes_ctr, cipher_key_len); in br_ssl_hs_server_run()
1769 /* switch-cbc-in */ in br_ssl_hs_server_run()
1780 aes ? ENG->iaes_cbcdec : ENG->ides_cbcdec, cipher_key_len); in br_ssl_hs_server_run()
1785 /* switch-cbc-out */ in br_ssl_hs_server_run()
1796 aes ? ENG->iaes_cbcenc : ENG->ides_cbcenc, cipher_key_len); in br_ssl_hs_server_run()
1801 /* switch-chapol-in */ in br_ssl_hs_server_run()
1812 /* switch-chapol-out */ in br_ssl_hs_server_run()
1823 /* ta-names-total-length */ in br_ssl_hs_server_run()
1828 if (CTX->ta_names != NULL) { in br_ssl_hs_server_run()
1829 for (u = 0; u < CTX->num_tas; u ++) { in br_ssl_hs_server_run()
1830 len += CTX->ta_names[u].len + 2; in br_ssl_hs_server_run()
1832 } else if (CTX->tas != NULL) { in br_ssl_hs_server_run()
1833 for (u = 0; u < CTX->num_tas; u ++) { in br_ssl_hs_server_run()
1834 len += CTX->tas[u].dn.len + 2; in br_ssl_hs_server_run()
1842 /* test-protocol-name */ in br_ssl_hs_server_run()
1847 for (u = 0; u < ENG->protocol_names_num; u ++) { in br_ssl_hs_server_run()
1850 name = ENG->protocol_names[u]; in br_ssl_hs_server_run()
1851 if (len == strlen(name) && memcmp(ENG->pad, name, len) == 0) { in br_ssl_hs_server_run()
1856 T0_PUSHi(-1); in br_ssl_hs_server_run()
1861 /* total-chain-length */ in br_ssl_hs_server_run()
1867 for (u = 0; u < ENG->chain_len; u ++) { in br_ssl_hs_server_run()
1868 total += 3 + (uint32_t)ENG->chain[u].data_len; in br_ssl_hs_server_run()
1879 T0_PUSH(-(uint32_t)(a < b)); in br_ssl_hs_server_run()
1893 /* verify-CV-sig */ in br_ssl_hs_server_run()
1903 /* write-blob-chunk */ in br_ssl_hs_server_run()
1905 size_t clen = ENG->hlen_out; in br_ssl_hs_server_run()
1914 memcpy(ENG->hbuf_out, (unsigned char *)ENG + addr, clen); in br_ssl_hs_server_run()
1915 if (ENG->record_type_out == BR_SSL_HANDSHAKE) { in br_ssl_hs_server_run()
1916 br_multihash_update(&ENG->mhash, ENG->hbuf_out, clen); in br_ssl_hs_server_run()
1919 T0_PUSH(len - (uint32_t)clen); in br_ssl_hs_server_run()
1920 ENG->hbuf_out += clen; in br_ssl_hs_server_run()
1921 ENG->hlen_out -= clen; in br_ssl_hs_server_run()
1927 /* write8-native */ in br_ssl_hs_server_run()
1932 if (ENG->hlen_out > 0) { in br_ssl_hs_server_run()
1933 if (ENG->record_type_out == BR_SSL_HANDSHAKE) { in br_ssl_hs_server_run()
1934 br_multihash_update(&ENG->mhash, &x, 1); in br_ssl_hs_server_run()
1936 *ENG->hbuf_out ++ = x; in br_ssl_hs_server_run()
1937 ENG->hlen_out --; in br_ssl_hs_server_run()
1938 T0_PUSHi(-1); in br_ssl_hs_server_run()
1946 /* x509-append */ in br_ssl_hs_server_run()
1951 xc = *(ENG->x509ctx); in br_ssl_hs_server_run()
1953 xc->append(ENG->x509ctx, ENG->pad, len); in br_ssl_hs_server_run()
1958 /* x509-end-cert */ in br_ssl_hs_server_run()
1962 xc = *(ENG->x509ctx); in br_ssl_hs_server_run()
1963 xc->end_cert(ENG->x509ctx); in br_ssl_hs_server_run()
1968 /* x509-end-chain */ in br_ssl_hs_server_run()
1972 xc = *(ENG->x509ctx); in br_ssl_hs_server_run()
1973 T0_PUSH(xc->end_chain(ENG->x509ctx)); in br_ssl_hs_server_run()
1978 /* x509-start-cert */ in br_ssl_hs_server_run()
1982 xc = *(ENG->x509ctx); in br_ssl_hs_server_run()
1983 xc->start_cert(ENG->x509ctx, T0_POP()); in br_ssl_hs_server_run()
1988 /* x509-start-chain */ in br_ssl_hs_server_run()
1994 xc = *(ENG->x509ctx); in br_ssl_hs_server_run()
1995 xc->start_chain(ENG->x509ctx, bc ? ENG->server_name : NULL); in br_ssl_hs_server_run()
2002 T0_ENTER(ip, rp, t0x); in br_ssl_hs_server_run()
2006 ((t0_context *)t0ctx)->dp = dp; in br_ssl_hs_server_run()
2007 ((t0_context *)t0ctx)->rp = rp; in br_ssl_hs_server_run()
2008 ((t0_context *)t0ctx)->ip = ip; in br_ssl_hs_server_run()