Lines Matching +full:1 +full:- +full:eng

35 	neg = ((**p) >> 6) & 1;  in t0_parse7E_signed()
36 x = (uint32_t)-neg; 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… macro
87 * first field of the br_ssl_client_context structure ('eng'), then
92 #define CTX ((br_ssl_client_context *)ENG)
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()
127 * 11 bytes for the PKCS#1 type 2 padding). Note that the X.509 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()
148 * Apply PKCS#1 type 2 padding. 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()
210 head[1] = 0; 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()
293 * force top bit to 0 and bottom bit to 1, which guarantees that in make_pms_ecdh()
296 order = ctx->eng.iec->order(curve, &olen); in make_pms_ecdh()
299 mask >>= 1; 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()
884 t0_newip = &t0_codeblock[t0_caddr[(slot) - T0_INTERPRETED]]; \
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); \
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()
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()
976 case 1: /* literal constant */ 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()
1184 void *addr = (unsigned char *)ENG + (size_t)T0_POP(); 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()
1209 br_tls_prf_impl prf = br_ssl_engine_get_PRF(ENG, prf_id); 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()
1221 1, &seed); 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()
1273 br_ssl_engine_fail(ENG, BR_ERR_INVALID_ALGORITHM); 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()
1318 br_ssl_engine_fail(ENG, BR_ERR_INVALID_ALGORITHM); 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()
1354 br_ssl_engine_fail(ENG, (int)T0_POPi()); in br_ssl_hs_client_run()
1360 /* flush-record */ in br_ssl_hs_client_run()
1362 br_ssl_engine_flush_record(ENG); 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()
1409 T0_PUSH(*(uint16_t *)(void *)((unsigned char *)ENG + addr)); in br_ssl_hs_client_run()
1417 T0_PUSH(*(uint32_t *)(void *)((unsigned char *)ENG + addr)); in br_ssl_hs_client_run()
1425 T0_PUSH(*((unsigned char *)ENG + addr)); 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()
1440 void *addr2 = (unsigned char *)ENG + (size_t)T0_POP(); in br_ssl_hs_client_run()
1441 void *addr1 = (unsigned char *)ENG + (size_t)T0_POP(); in br_ssl_hs_client_run()
1443 T0_PUSH((uint32_t)-(x == 0)); in br_ssl_hs_client_run()
1451 void *src = (unsigned char *)ENG + (size_t)T0_POP(); in br_ssl_hs_client_run()
1452 void *dst = (unsigned char *)ENG + (size_t)T0_POP(); in br_ssl_hs_client_run()
1461 void *addr = (unsigned char *)ENG + (size_t)T0_POP(); 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()
1507 T0_PUSH(T0_PEEK(1)); 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()
1569 *(uint16_t *)(void *)((unsigned char *)ENG + addr) = (uint16_t)T0_POP(); in br_ssl_hs_client_run()
1577 *(uint32_t *)(void *)((unsigned char *)ENG + addr) = (uint32_t)T0_POP(); in br_ssl_hs_client_run()
1585 *((unsigned char *)ENG + addr) = (unsigned char)T0_POP(); in br_ssl_hs_client_run()
1592 void *str = (unsigned char *)ENG + (size_t)T0_POP(); 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()
1615 x |= 1U << 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()
1653 br_ssl_engine_switch_ccm_in(ENG, is_client, prf_id, 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()
1668 br_ssl_engine_switch_ccm_out(ENG, is_client, prf_id, 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()
1682 br_ssl_engine_switch_gcm_in(ENG, is_client, prf_id, 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()
1696 br_ssl_engine_switch_gcm_out(ENG, is_client, prf_id, 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()
1712 br_ssl_engine_switch_cbc_in(ENG, is_client, prf_id, mac_id, 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()
1728 br_ssl_engine_switch_cbc_out(ENG, is_client, prf_id, mac_id, 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()
1740 br_ssl_engine_switch_chapol_in(ENG, is_client, prf_id); in br_ssl_hs_client_run()
1745 /* switch-chapol-out */ in br_ssl_hs_client_run()
1751 br_ssl_engine_switch_chapol_out(ENG, is_client, prf_id); 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()
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()