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 * Generate the pre-master secret for RSA key exchange, and encrypt it
97 * data length (in bytes), or -x on error, with 'x' being an error code.
112 xc = ctx->eng.x509ctx; in make_pms_rsa()
113 pk = (*xc)->get_pkey(xc, NULL); in make_pms_rsa()
118 n = pk->key.rsa.n; in make_pms_rsa()
119 nlen = pk->key.rsa.nlen; in make_pms_rsa()
122 nlen --; in make_pms_rsa()
126 * We need at least 59 bytes (48 bytes for pre-master secret, and in make_pms_rsa()
133 return -BR_ERR_X509_WEAK_PUBLIC_KEY; in make_pms_rsa()
135 if (nlen > sizeof ctx->eng.pad) { in make_pms_rsa()
136 return -BR_ERR_LIMIT_EXCEEDED; in make_pms_rsa()
142 pms = ctx->eng.pad + nlen - 48; in make_pms_rsa()
143 br_enc16be(pms, ctx->eng.version_max); in make_pms_rsa()
144 br_hmac_drbg_generate(&ctx->eng.rng, pms + 2, 46); in make_pms_rsa()
145 br_ssl_engine_compute_master(&ctx->eng, prf_id, pms, 48); in make_pms_rsa()
150 ctx->eng.pad[0] = 0x00; in make_pms_rsa()
151 ctx->eng.pad[1] = 0x02; in make_pms_rsa()
152 ctx->eng.pad[nlen - 49] = 0x00; in make_pms_rsa()
153 br_hmac_drbg_generate(&ctx->eng.rng, ctx->eng.pad + 2, nlen - 51); in make_pms_rsa()
154 for (u = 2; u < nlen - 49; u ++) { in make_pms_rsa()
155 while (ctx->eng.pad[u] == 0) { in make_pms_rsa()
156 br_hmac_drbg_generate(&ctx->eng.rng, in make_pms_rsa()
157 &ctx->eng.pad[u], 1); in make_pms_rsa()
164 if (!ctx->irsapub(ctx->eng.pad, nlen, &pk->key.rsa)) { in make_pms_rsa()
165 return -BR_ERR_LIMIT_EXCEEDED; in make_pms_rsa()
184 * hash hash function ID (2 to 6), or 0 for MD5+SHA-1 (with RSA only)
185 * use_rsa non-zero for RSA signature, zero for ECDSA
200 xc = ctx->eng.x509ctx; in verify_SKE_sig()
201 pk = (*xc)->get_pkey(xc, NULL); in verify_SKE_sig()
203 br_multihash_copyimpl(&mhc, &ctx->eng.mhash); in verify_SKE_sig()
206 ctx->eng.client_random, sizeof ctx->eng.client_random); in verify_SKE_sig()
208 ctx->eng.server_random, sizeof ctx->eng.server_random); in verify_SKE_sig()
211 head[2] = ctx->eng.ecdhe_curve; in verify_SKE_sig()
212 head[3] = ctx->eng.ecdhe_point_len; in verify_SKE_sig()
215 ctx->eng.ecdhe_point, ctx->eng.ecdhe_point_len); in verify_SKE_sig()
234 hash_oid = HASH_OID[hash - 2]; in verify_SKE_sig()
238 if (!ctx->eng.irsavrfy(ctx->eng.pad, sig_len, in verify_SKE_sig()
239 hash_oid, hv_len, &pk->key.rsa, tmp) in verify_SKE_sig()
245 if (!ctx->eng.iecdsa(ctx->eng.iec, hv, hv_len, &pk->key.ec, in verify_SKE_sig()
246 ctx->eng.pad, sig_len)) in verify_SKE_sig()
255 * Perform client-side ECDH (or ECDHE). The point that should be sent to
257 * length (in bytes), or -x on error, with 'x' being an error code.
260 * is non-zero, or from the X.509 engine context if 'ecdhe' is zero
273 curve = ctx->eng.ecdhe_curve; in make_pms_ecdh()
274 point_src = ctx->eng.ecdhe_point; in make_pms_ecdh()
275 point_len = ctx->eng.ecdhe_point_len; in make_pms_ecdh()
280 xc = ctx->eng.x509ctx; in make_pms_ecdh()
281 pk = (*xc)->get_pkey(xc, NULL); in make_pms_ecdh()
282 curve = pk->key.ec.curve; in make_pms_ecdh()
283 point_src = pk->key.ec.q; in make_pms_ecdh()
284 point_len = pk->key.ec.qlen; in make_pms_ecdh()
286 if ((ctx->eng.iec->supported_curves & ((uint32_t)1 << curve)) == 0) { in make_pms_ecdh()
287 return -BR_ERR_INVALID_ALGORITHM; in make_pms_ecdh()
291 * We need to generate our key, as a non-zero random value which in make_pms_ecdh()
296 order = ctx->eng.iec->order(curve, &olen); in make_pms_ecdh()
301 br_hmac_drbg_generate(&ctx->eng.rng, key, olen); in make_pms_ecdh()
303 key[olen - 1] |= 0x01; in make_pms_ecdh()
307 * pre-master secret. in make_pms_ecdh()
309 ctx->eng.iec->generator(curve, &glen); in make_pms_ecdh()
311 return -BR_ERR_INVALID_ALGORITHM; in make_pms_ecdh()
315 if (!ctx->eng.iec->mul(point, glen, key, olen, curve)) { in make_pms_ecdh()
316 return -BR_ERR_INVALID_ALGORITHM; in make_pms_ecdh()
320 * The pre-master secret is the X coordinate. in make_pms_ecdh()
322 xoff = ctx->eng.iec->xoff(curve, &xlen); in make_pms_ecdh()
323 br_ssl_engine_compute_master(&ctx->eng, prf_id, point + xoff, xlen); in make_pms_ecdh()
325 ctx->eng.iec->mulgen(point, key, olen, curve); in make_pms_ecdh()
326 memcpy(ctx->eng.pad, point, glen); in make_pms_ecdh()
338 * Returned value is 0 on success, -1 on error.
348 xc = ctx->eng.x509ctx; in make_pms_static_ecdh()
349 pk = (*xc)->get_pkey(xc, NULL); in make_pms_static_ecdh()
350 point_len = pk->key.ec.qlen; in make_pms_static_ecdh()
352 return -1; in make_pms_static_ecdh()
354 memcpy(point, pk->key.ec.q, point_len); in make_pms_static_ecdh()
355 if (!(*ctx->client_auth_vtable)->do_keyx( in make_pms_static_ecdh()
356 ctx->client_auth_vtable, point, &point_len)) in make_pms_static_ecdh()
358 return -1; in make_pms_static_ecdh()
360 br_ssl_engine_compute_master(&ctx->eng, in make_pms_static_ecdh()
366 * Compute the client-side signature. This is invoked only when a
367 * signature-based client authentication was selected. The computed
380 * hash functions that the multi-hasher supports. in make_client_sign()
382 if (ctx->hash_id) { in make_client_sign()
383 hv_len = br_multihash_out(&ctx->eng.mhash, in make_client_sign()
384 ctx->hash_id, ctx->eng.pad); in make_client_sign()
386 br_multihash_out(&ctx->eng.mhash, in make_client_sign()
387 br_md5_ID, ctx->eng.pad); in make_client_sign()
388 br_multihash_out(&ctx->eng.mhash, in make_client_sign()
389 br_sha1_ID, ctx->eng.pad + 16); in make_client_sign()
392 return (*ctx->client_auth_vtable)->do_sign( in make_client_sign()
393 ctx->client_auth_vtable, ctx->hash_id, hv_len, in make_client_sign()
394 ctx->eng.pad, sizeof ctx->eng.pad); in make_client_sign()
881 #define T0_ENTER(ip, rp, slot) do { \ argument
884 t0_newip = &t0_codeblock[t0_caddr[(slot) - T0_INTERPRETED]]; \
886 (rp) += t0_lnum; \
887 *((rp) ++) = (uint32_t)((ip) - &t0_codeblock[0]) + (t0_lnum << 16); \
896 t0ctx->ip = &t0_codeblock[0]; \
897 T0_ENTER(t0ctx->ip, t0ctx->rp, slot); \
907 uint32_t *dp, *rp; in br_ssl_hs_client_run() local
910 #define T0_LOCAL(x) (*(rp - 2 - (x))) in br_ssl_hs_client_run()
911 #define T0_POP() (*-- dp) in br_ssl_hs_client_run()
912 #define T0_POPi() (*(int32_t *)(-- dp)) in br_ssl_hs_client_run()
913 #define T0_PEEK(x) (*(dp - 1 - (x))) in br_ssl_hs_client_run()
914 #define T0_PEEKi(x) (*(int32_t *)(dp - 1 - (x))) in br_ssl_hs_client_run()
917 #define T0_RPOP() (*-- rp) in br_ssl_hs_client_run()
918 #define T0_RPOPi() (*(int32_t *)(-- rp)) in br_ssl_hs_client_run()
919 #define T0_RPUSH(v) do { *rp = (v); rp ++; } while (0) in br_ssl_hs_client_run()
920 #define T0_RPUSHi(v) do { *(int32_t *)rp = (v); rp ++; } while (0) in br_ssl_hs_client_run()
923 uint32_t t0tmp = *(dp - 1 - t0len); \ in br_ssl_hs_client_run()
924 memmove(dp - t0len - 1, dp - t0len, t0len * sizeof *dp); \ in br_ssl_hs_client_run()
925 *(dp - 1) = t0tmp; \ in br_ssl_hs_client_run()
928 uint32_t t0tmp = *(dp - 2); \ in br_ssl_hs_client_run()
929 *(dp - 2) = *(dp - 1); \ in br_ssl_hs_client_run()
930 *(dp - 1) = t0tmp; \ in br_ssl_hs_client_run()
933 uint32_t t0tmp = *(dp - 3); \ in br_ssl_hs_client_run()
934 *(dp - 3) = *(dp - 2); \ in br_ssl_hs_client_run()
935 *(dp - 2) = *(dp - 1); \ in br_ssl_hs_client_run()
936 *(dp - 1) = t0tmp; \ in br_ssl_hs_client_run()
939 uint32_t t0tmp = *(dp - 1); \ in br_ssl_hs_client_run()
940 *(dp - 1) = *(dp - 2); \ in br_ssl_hs_client_run()
941 *(dp - 2) = *(dp - 3); \ in br_ssl_hs_client_run()
942 *(dp - 3) = t0tmp; \ in br_ssl_hs_client_run()
953 dp = ((t0_context *)t0ctx)->dp; in br_ssl_hs_client_run()
954 rp = ((t0_context *)t0ctx)->rp; in br_ssl_hs_client_run()
955 ip = ((t0_context *)t0ctx)->ip; in br_ssl_hs_client_run()
968 rp -= (t0x >> 16); in br_ssl_hs_client_run()
1020 /* - */ in br_ssl_hs_client_run()
1024 T0_PUSH(a - b); in br_ssl_hs_client_run()
1033 T0_PUSH(-(uint32_t)(a < b)); in br_ssl_hs_client_run()
1051 T0_PUSH(-(uint32_t)(a <= b)); in br_ssl_hs_client_run()
1060 T0_PUSH(-(uint32_t)(a != b)); in br_ssl_hs_client_run()
1069 T0_PUSH(-(uint32_t)(a == b)); in br_ssl_hs_client_run()
1078 T0_PUSH(-(uint32_t)(a > b)); in br_ssl_hs_client_run()
1087 T0_PUSH(-(uint32_t)(a >= b)); in br_ssl_hs_client_run()
1101 /* anchor-dn-append-name */ in br_ssl_hs_client_run()
1106 if (CTX->client_auth_vtable != NULL) { in br_ssl_hs_client_run()
1107 (*CTX->client_auth_vtable)->append_name( in br_ssl_hs_client_run()
1108 CTX->client_auth_vtable, ENG->pad, len); in br_ssl_hs_client_run()
1114 /* anchor-dn-end-name */ in br_ssl_hs_client_run()
1116 if (CTX->client_auth_vtable != NULL) { in br_ssl_hs_client_run()
1117 (*CTX->client_auth_vtable)->end_name( in br_ssl_hs_client_run()
1118 CTX->client_auth_vtable); in br_ssl_hs_client_run()
1124 /* anchor-dn-end-name-list */ in br_ssl_hs_client_run()
1126 if (CTX->client_auth_vtable != NULL) { in br_ssl_hs_client_run()
1127 (*CTX->client_auth_vtable)->end_name_list( in br_ssl_hs_client_run()
1128 CTX->client_auth_vtable); in br_ssl_hs_client_run()
1134 /* anchor-dn-start-name */ in br_ssl_hs_client_run()
1139 if (CTX->client_auth_vtable != NULL) { in br_ssl_hs_client_run()
1140 (*CTX->client_auth_vtable)->start_name( in br_ssl_hs_client_run()
1141 CTX->client_auth_vtable, len); in br_ssl_hs_client_run()
1147 /* anchor-dn-start-name-list */ in br_ssl_hs_client_run()
1149 if (CTX->client_auth_vtable != NULL) { in br_ssl_hs_client_run()
1150 (*CTX->client_auth_vtable)->start_name_list( in br_ssl_hs_client_run()
1151 CTX->client_auth_vtable); in br_ssl_hs_client_run()
1166 /* begin-cert */ in br_ssl_hs_client_run()
1168 if (ENG->chain_len == 0) { in br_ssl_hs_client_run()
1169 T0_PUSHi(-1); in br_ssl_hs_client_run()
1171 ENG->cert_cur = ENG->chain->data; in br_ssl_hs_client_run()
1172 ENG->cert_len = ENG->chain->data_len; in br_ssl_hs_client_run()
1173 ENG->chain ++; in br_ssl_hs_client_run()
1174 ENG->chain_len --; in br_ssl_hs_client_run()
1175 T0_PUSH(ENG->cert_len); in br_ssl_hs_client_run()
1190 /* can-output? */ in br_ssl_hs_client_run()
1192 T0_PUSHi(-(ENG->hlen_out > 0)); in br_ssl_hs_client_run()
1202 /* compute-Finished-inner */ in br_ssl_hs_client_run()
1211 if (ENG->session.version >= BR_TLS12) { in br_ssl_hs_client_run()
1212 seed.len = br_multihash_out(&ENG->mhash, prf_id, tmp); in br_ssl_hs_client_run()
1214 br_multihash_out(&ENG->mhash, br_md5_ID, tmp); in br_ssl_hs_client_run()
1215 br_multihash_out(&ENG->mhash, br_sha1_ID, tmp + 16); in br_ssl_hs_client_run()
1218 prf(ENG->pad, 12, ENG->session.master_secret, in br_ssl_hs_client_run()
1219 sizeof ENG->session.master_secret, in br_ssl_hs_client_run()
1226 /* copy-cert-chunk */ in br_ssl_hs_client_run()
1230 clen = ENG->cert_len; in br_ssl_hs_client_run()
1231 if (clen > sizeof ENG->pad) { in br_ssl_hs_client_run()
1232 clen = sizeof ENG->pad; in br_ssl_hs_client_run()
1234 memcpy(ENG->pad, ENG->cert_cur, clen); in br_ssl_hs_client_run()
1235 ENG->cert_cur += clen; in br_ssl_hs_client_run()
1236 ENG->cert_len -= clen; in br_ssl_hs_client_run()
1242 /* copy-protocol-name */ in br_ssl_hs_client_run()
1245 size_t len = strlen(ENG->protocol_names[idx]); in br_ssl_hs_client_run()
1246 memcpy(ENG->pad, ENG->protocol_names[idx], len); in br_ssl_hs_client_run()
1252 /* data-get8 */ in br_ssl_hs_client_run()
1260 /* discard-input */ in br_ssl_hs_client_run()
1262 ENG->hlen_in = 0; in br_ssl_hs_client_run()
1267 /* do-client-sign */ in br_ssl_hs_client_run()
1281 /* do-ecdh */ in br_ssl_hs_client_run()
1289 br_ssl_engine_fail(ENG, -x); in br_ssl_hs_client_run()
1298 /* do-rsa-encrypt */ in br_ssl_hs_client_run()
1304 br_ssl_engine_fail(ENG, -x); in br_ssl_hs_client_run()
1313 /* do-static-ecdh */ in br_ssl_hs_client_run()
1335 /* ext-ALPN-length */ in br_ssl_hs_client_run()
1339 if (ENG->protocol_names_num == 0) { in br_ssl_hs_client_run()
1344 for (u = 0; u < ENG->protocol_names_num; u ++) { in br_ssl_hs_client_run()
1345 len += 1 + strlen(ENG->protocol_names[u]); in br_ssl_hs_client_run()
1360 /* flush-record */ in br_ssl_hs_client_run()
1367 /* get-client-chain */ in br_ssl_hs_client_run()
1372 if (CTX->client_auth_vtable != NULL) { in br_ssl_hs_client_run()
1375 (*CTX->client_auth_vtable)->choose(CTX->client_auth_vtable, in br_ssl_hs_client_run()
1377 CTX->auth_type = (unsigned char)ux.auth_type; in br_ssl_hs_client_run()
1378 CTX->hash_id = (unsigned char)ux.hash_id; in br_ssl_hs_client_run()
1379 ENG->chain = ux.chain; in br_ssl_hs_client_run()
1380 ENG->chain_len = ux.chain_len; in br_ssl_hs_client_run()
1382 CTX->hash_id = 0; in br_ssl_hs_client_run()
1383 ENG->chain_len = 0; in br_ssl_hs_client_run()
1389 /* get-key-type-usages */ in br_ssl_hs_client_run()
1395 xc = *(ENG->x509ctx); in br_ssl_hs_client_run()
1396 pk = xc->get_pkey(ENG->x509ctx, &usages); in br_ssl_hs_client_run()
1400 T0_PUSH(pk->key_type | usages); in br_ssl_hs_client_run()
1430 /* has-input? */ in br_ssl_hs_client_run()
1432 T0_PUSHi(-(ENG->hlen_in != 0)); in br_ssl_hs_client_run()
1443 T0_PUSH((uint32_t)-(x == 0)); in br_ssl_hs_client_run()
1462 br_hmac_drbg_generate(&ENG->rng, addr, len); in br_ssl_hs_client_run()
1467 /* more-incoming-bytes? */ in br_ssl_hs_client_run()
1469 T0_PUSHi(ENG->hlen_in != 0 || !br_ssl_engine_recvrec_finished(ENG)); in br_ssl_hs_client_run()
1474 /* multihash-init */ in br_ssl_hs_client_run()
1476 br_multihash_init(&ENG->mhash); in br_ssl_hs_client_run()
1484 T0_PUSH(-a); in br_ssl_hs_client_run()
1511 /* read-chunk-native */ in br_ssl_hs_client_run()
1513 size_t clen = ENG->hlen_in; in br_ssl_hs_client_run()
1522 memcpy((unsigned char *)ENG + addr, ENG->hbuf_in, clen); in br_ssl_hs_client_run()
1523 if (ENG->record_type_in == BR_SSL_HANDSHAKE) { in br_ssl_hs_client_run()
1524 br_multihash_update(&ENG->mhash, ENG->hbuf_in, clen); in br_ssl_hs_client_run()
1527 T0_PUSH(len - (uint32_t)clen); in br_ssl_hs_client_run()
1528 ENG->hbuf_in += clen; in br_ssl_hs_client_run()
1529 ENG->hlen_in -= clen; in br_ssl_hs_client_run()
1535 /* read8-native */ in br_ssl_hs_client_run()
1537 if (ENG->hlen_in > 0) { in br_ssl_hs_client_run()
1540 x = *ENG->hbuf_in ++; in br_ssl_hs_client_run()
1541 if (ENG->record_type_in == BR_SSL_HANDSHAKE) { in br_ssl_hs_client_run()
1542 br_multihash_update(&ENG->mhash, &x, 1); in br_ssl_hs_client_run()
1545 ENG->hlen_in --; in br_ssl_hs_client_run()
1547 T0_PUSHi(-1); in br_ssl_hs_client_run()
1553 /* set-server-curve */ in br_ssl_hs_client_run()
1558 xc = *(ENG->x509ctx); in br_ssl_hs_client_run()
1559 pk = xc->get_pkey(ENG->x509ctx, NULL); in br_ssl_hs_client_run()
1560 CTX->server_curve = in br_ssl_hs_client_run()
1561 (pk->key_type == BR_KEYTYPE_EC) ? pk->key.ec.curve : 0; in br_ssl_hs_client_run()
1598 /* supported-curves */ in br_ssl_hs_client_run()
1600 uint32_t x = ENG->iec == NULL ? 0 : ENG->iec->supported_curves; in br_ssl_hs_client_run()
1606 /* supported-hash-functions */ in br_ssl_hs_client_run()
1614 if (br_multihash_getimpl(&ENG->mhash, i)) { in br_ssl_hs_client_run()
1625 /* supports-ecdsa? */ in br_ssl_hs_client_run()
1627 T0_PUSHi(-(ENG->iecdsa != 0)); in br_ssl_hs_client_run()
1632 /* supports-rsa-sign? */ in br_ssl_hs_client_run()
1634 T0_PUSHi(-(ENG->irsavrfy != 0)); in br_ssl_hs_client_run()
1644 /* switch-aesccm-in */ in br_ssl_hs_client_run()
1654 ENG->iaes_ctrcbc, cipher_key_len, tag_len); in br_ssl_hs_client_run()
1659 /* switch-aesccm-out */ in br_ssl_hs_client_run()
1669 ENG->iaes_ctrcbc, cipher_key_len, tag_len); in br_ssl_hs_client_run()
1674 /* switch-aesgcm-in */ in br_ssl_hs_client_run()
1683 ENG->iaes_ctr, cipher_key_len); in br_ssl_hs_client_run()
1688 /* switch-aesgcm-out */ in br_ssl_hs_client_run()
1697 ENG->iaes_ctr, cipher_key_len); in br_ssl_hs_client_run()
1702 /* switch-cbc-in */ in br_ssl_hs_client_run()
1713 aes ? ENG->iaes_cbcdec : ENG->ides_cbcdec, cipher_key_len); in br_ssl_hs_client_run()
1718 /* switch-cbc-out */ in br_ssl_hs_client_run()
1729 aes ? ENG->iaes_cbcenc : ENG->ides_cbcenc, cipher_key_len); in br_ssl_hs_client_run()
1734 /* switch-chapol-in */ in br_ssl_hs_client_run()
1745 /* switch-chapol-out */ in br_ssl_hs_client_run()
1756 /* test-protocol-name */ in br_ssl_hs_client_run()
1761 for (u = 0; u < ENG->protocol_names_num; u ++) { in br_ssl_hs_client_run()
1764 name = ENG->protocol_names[u]; in br_ssl_hs_client_run()
1765 if (len == strlen(name) && memcmp(ENG->pad, name, len) == 0) { in br_ssl_hs_client_run()
1770 T0_PUSHi(-1); in br_ssl_hs_client_run()
1775 /* total-chain-length */ in br_ssl_hs_client_run()
1781 for (u = 0; u < ENG->chain_len; u ++) { in br_ssl_hs_client_run()
1782 total += 3 + (uint32_t)ENG->chain[u].data_len; in br_ssl_hs_client_run()
1798 /* verify-SKE-sig */ in br_ssl_hs_client_run()
1809 /* write-blob-chunk */ in br_ssl_hs_client_run()
1811 size_t clen = ENG->hlen_out; in br_ssl_hs_client_run()
1820 memcpy(ENG->hbuf_out, (unsigned char *)ENG + addr, clen); in br_ssl_hs_client_run()
1821 if (ENG->record_type_out == BR_SSL_HANDSHAKE) { in br_ssl_hs_client_run()
1822 br_multihash_update(&ENG->mhash, ENG->hbuf_out, clen); in br_ssl_hs_client_run()
1825 T0_PUSH(len - (uint32_t)clen); in br_ssl_hs_client_run()
1826 ENG->hbuf_out += clen; in br_ssl_hs_client_run()
1827 ENG->hlen_out -= clen; in br_ssl_hs_client_run()
1833 /* write8-native */ in br_ssl_hs_client_run()
1838 if (ENG->hlen_out > 0) { in br_ssl_hs_client_run()
1839 if (ENG->record_type_out == BR_SSL_HANDSHAKE) { in br_ssl_hs_client_run()
1840 br_multihash_update(&ENG->mhash, &x, 1); in br_ssl_hs_client_run()
1842 *ENG->hbuf_out ++ = x; in br_ssl_hs_client_run()
1843 ENG->hlen_out --; in br_ssl_hs_client_run()
1844 T0_PUSHi(-1); in br_ssl_hs_client_run()
1852 /* x509-append */ in br_ssl_hs_client_run()
1857 xc = *(ENG->x509ctx); in br_ssl_hs_client_run()
1859 xc->append(ENG->x509ctx, ENG->pad, len); in br_ssl_hs_client_run()
1864 /* x509-end-cert */ in br_ssl_hs_client_run()
1868 xc = *(ENG->x509ctx); in br_ssl_hs_client_run()
1869 xc->end_cert(ENG->x509ctx); in br_ssl_hs_client_run()
1874 /* x509-end-chain */ in br_ssl_hs_client_run()
1878 xc = *(ENG->x509ctx); in br_ssl_hs_client_run()
1879 T0_PUSH(xc->end_chain(ENG->x509ctx)); in br_ssl_hs_client_run()
1884 /* x509-start-cert */ in br_ssl_hs_client_run()
1888 xc = *(ENG->x509ctx); in br_ssl_hs_client_run()
1889 xc->start_cert(ENG->x509ctx, T0_POP()); in br_ssl_hs_client_run()
1894 /* x509-start-chain */ in br_ssl_hs_client_run()
1900 xc = *(ENG->x509ctx); in br_ssl_hs_client_run()
1901 xc->start_chain(ENG->x509ctx, bc ? ENG->server_name : NULL); in br_ssl_hs_client_run()
1908 T0_ENTER(ip, rp, t0x); in br_ssl_hs_client_run()
1912 ((t0_context *)t0ctx)->dp = dp; in br_ssl_hs_client_run()
1913 ((t0_context *)t0ctx)->rp = rp; in br_ssl_hs_client_run()
1914 ((t0_context *)t0ctx)->ip = ip; in br_ssl_hs_client_run()