Lines Matching +full:0 +full:- +full:128
2 * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved.
30 0x44, 0x4f, 0x57, 0x4e, 0x47, 0x52, 0x44, 0x00
33 0x44, 0x4f, 0x57, 0x4e, 0x47, 0x52, 0x44, 0x01
48 0, 0,
51 128,
52 128,
63 0, 0,
79 0, 0,
95 0, 0,
98 128,
99 128,
110 0, 0,
113 128,
114 128,
142 0,
143 0,
158 0,
159 0,
240 128,
241 128,
256 128,
257 128,
272 128,
273 128,
288 128,
289 128,
368 0,
369 0,
384 128,
385 128,
416 128,
417 128,
432 128,
433 128,
480 128,
481 128,
512 128,
513 128,
544 128,
545 128,
576 128,
577 128,
608 128,
609 128,
640 128,
641 128,
672 128,
673 128,
704 128,
705 128,
736 128,
737 128,
768 128,
769 128,
800 128,
801 128,
832 128,
833 128,
864 128,
865 128,
896 128,
897 128,
928 128,
929 128,
960 0,
961 0,
994 128,
995 128,
1026 0,
1027 0,
1060 128,
1061 128,
1092 0,
1093 0,
1126 128,
1127 128,
1158 128,
1159 128,
1190 128,
1191 128,
1222 128,
1223 128,
1254 128,
1255 128,
1286 0,
1287 0,
1302 0,
1303 0,
1318 0,
1319 0,
1352 128,
1353 128,
1402 128,
1403 128,
1452 128,
1453 128,
1484 128,
1485 128,
1516 128,
1517 128,
1548 128,
1549 128,
1580 128,
1581 128,
1612 0,
1613 0,
1628 0,
1629 0,
1644 128,
1645 128,
1676 0,
1677 0,
1692 0,
1693 0,
1708 128,
1709 128,
1740 0,
1741 0,
1756 0,
1757 0,
1790 128,
1791 128,
1822 128,
1823 128,
1854 0,
1855 0,
1870 0,
1871 0,
1886 0,
1887 0,
1953 128,
1954 128,
1969 128,
1970 128,
1985 128,
1986 128,
2163 128,
2164 128,
2179 128,
2180 128,
2195 128,
2196 128,
2211 128,
2212 128,
2355 128,
2356 128,
2371 128,
2372 128,
2387 128,
2388 128,
2403 128,
2404 128,
2419 128,
2420 128,
2451 128,
2452 128,
2483 128,
2484 128,
2515 128,
2516 128,
2547 128,
2548 128,
2579 128,
2580 128,
2602 "GOST2001-GOST89-GOST89",
2604 0x3000081,
2610 0, 0,
2618 "GOST2001-NULL-GOST94",
2620 0x3000083,
2626 0, 0,
2629 0,
2630 0,
2634 "IANA-GOST2012-GOST8912-GOST8912",
2636 0x0300c102,
2642 0, 0,
2650 "LEGACY-GOST2012-GOST8912-GOST8912",
2652 0x0300ff85,
2658 0, 0,
2666 "GOST2012-NULL-GOST12",
2668 0x0300ff87,
2674 0, 0,
2677 0,
2678 0,
2682 "GOST2012-KUZNYECHIK-KUZNYECHIKOMAC",
2684 0x0300C100,
2690 0, 0,
2698 "GOST2012-MAGMA-MAGMAOMAC",
2700 0x0300C101,
2706 0, 0,
2727 128,
2728 128,
2744 128,
2745 128,
2760 128,
2761 128,
2776 128,
2777 128,
2792 128,
2793 128,
2807 0, 0,
2810 128,
2811 128,
2823 0, 0,
2826 128,
2827 128,
2839 0, 0,
2842 128,
2843 128,
2855 0, 0,
2858 128,
2859 128,
2871 0, 0,
2874 128,
2875 128,
2887 0, 0,
2890 128,
2891 128,
2903 0, 0,
2906 128,
2907 128,
2919 0, 0,
2922 128,
2923 128,
2935 0, 0,
2938 128,
2939 128,
2951 0, 0,
2954 128,
2955 128,
2972 128,
2973 128,
3004 128,
3005 128,
3036 128,
3037 128,
3068 128,
3069 128,
3100 128,
3101 128,
3132 128,
3133 128,
3164 128,
3165 128,
3196 128,
3197 128,
3218 * The list of known Signalling Cipher-Suite Value "ciphers", non-valid
3224 0,
3228 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3231 0,
3235 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3244 if (ap->id == bp->id) in cipher_compare()
3245 return 0; in cipher_compare()
3246 return ap->id < bp->id ? -1 : 1; in cipher_compare()
3251 qsort(tls13_ciphers, TLS13_NUM_CIPHERS, sizeof(tls13_ciphers[0]), in ssl_sort_cipher_list()
3253 qsort(ssl3_ciphers, SSL3_NUM_CIPHERS, sizeof(ssl3_ciphers[0]), in ssl_sort_cipher_list()
3255 qsort(ssl3_scsvs, SSL3_NUM_SCSVS, sizeof(ssl3_scsvs[0]), cipher_compare); in ssl_sort_cipher_list()
3283 0,
3306 return &(ssl3_ciphers[SSL3_NUM_CIPHERS - 1 - u]); in ssl3_get_cipher()
3320 return 0; in ssl3_set_handshake_header()
3334 return 0; in ssl3_new()
3337 if (!s->method->ssl_clear(s)) in ssl3_new()
3338 return 0; in ssl3_new()
3350 EVP_PKEY_free(s->s3.peer_tmp); in ssl3_free()
3351 s->s3.peer_tmp = NULL; in ssl3_free()
3352 EVP_PKEY_free(s->s3.tmp.pkey); in ssl3_free()
3353 s->s3.tmp.pkey = NULL; in ssl3_free()
3355 ssl_evp_cipher_free(s->s3.tmp.new_sym_enc); in ssl3_free()
3356 ssl_evp_md_free(s->s3.tmp.new_hash); in ssl3_free()
3358 OPENSSL_free(s->s3.tmp.ctype); in ssl3_free()
3359 sk_X509_NAME_pop_free(s->s3.tmp.peer_ca_names, X509_NAME_free); in ssl3_free()
3360 OPENSSL_free(s->s3.tmp.ciphers_raw); in ssl3_free()
3361 OPENSSL_clear_free(s->s3.tmp.pms, s->s3.tmp.pmslen); in ssl3_free()
3362 OPENSSL_free(s->s3.tmp.peer_sigalgs); in ssl3_free()
3363 OPENSSL_free(s->s3.tmp.peer_cert_sigalgs); in ssl3_free()
3365 OPENSSL_free(s->s3.alpn_selected); in ssl3_free()
3366 OPENSSL_free(s->s3.alpn_proposed); in ssl3_free()
3369 OPENSSL_free(s->s3.tmp.psk); in ssl3_free()
3375 memset(&s->s3, 0, sizeof(s->s3)); in ssl3_free()
3381 OPENSSL_free(s->s3.tmp.ctype); in ssl3_clear()
3382 sk_X509_NAME_pop_free(s->s3.tmp.peer_ca_names, X509_NAME_free); in ssl3_clear()
3383 OPENSSL_free(s->s3.tmp.ciphers_raw); in ssl3_clear()
3384 OPENSSL_clear_free(s->s3.tmp.pms, s->s3.tmp.pmslen); in ssl3_clear()
3385 OPENSSL_free(s->s3.tmp.peer_sigalgs); in ssl3_clear()
3386 OPENSSL_free(s->s3.tmp.peer_cert_sigalgs); in ssl3_clear()
3388 EVP_PKEY_free(s->s3.tmp.pkey); in ssl3_clear()
3389 EVP_PKEY_free(s->s3.peer_tmp); in ssl3_clear()
3393 OPENSSL_free(s->s3.alpn_selected); in ssl3_clear()
3394 OPENSSL_free(s->s3.alpn_proposed); in ssl3_clear()
3396 /* NULL/zero-out everything in the s3 struct */ in ssl3_clear()
3397 memset(&s->s3, 0, sizeof(s->s3)); in ssl3_clear()
3400 return 0; in ssl3_clear()
3402 s->version = SSL3_VERSION; in ssl3_clear()
3405 OPENSSL_free(s->ext.npn); in ssl3_clear()
3406 s->ext.npn = NULL; in ssl3_clear()
3407 s->ext.npn_len = 0; in ssl3_clear()
3416 return OPENSSL_strdup(s->srp_ctx.info); in srp_password_from_info_cb()
3424 int ret = 0; in ssl3_ctrl()
3430 ret = s->s3.num_renegotiations; in ssl3_ctrl()
3433 ret = s->s3.num_renegotiations; in ssl3_ctrl()
3434 s->s3.num_renegotiations = 0; in ssl3_ctrl()
3437 ret = s->s3.total_renegotiations; in ssl3_ctrl()
3440 ret = (int)(s->s3.flags); in ssl3_ctrl()
3448 return 0; in ssl3_ctrl()
3453 return 0; in ssl3_ctrl()
3457 return 0; in ssl3_ctrl()
3469 s->cert->dh_tmp_auto = larg; in ssl3_ctrl()
3476 return 0; in ssl3_ctrl()
3478 return ssl_set_tmp_ecdh_groups(&s->ext.supportedgroups, in ssl3_ctrl()
3479 &s->ext.supportedgroups_len, in ssl3_ctrl()
3489 * make ABI-breaking changes, we may want to make use of this API in ssl3_ctrl()
3495 OPENSSL_free(s->ext.hostname); in ssl3_ctrl()
3496 s->ext.hostname = NULL; in ssl3_ctrl()
3502 if (len == 0 || len > TLSEXT_MAXLEN_host_name) { in ssl3_ctrl()
3504 return 0; in ssl3_ctrl()
3506 if ((s->ext.hostname = OPENSSL_strdup((char *)parg)) == NULL) { in ssl3_ctrl()
3508 return 0; in ssl3_ctrl()
3512 return 0; in ssl3_ctrl()
3516 s->ext.debug_arg = parg; in ssl3_ctrl()
3521 ret = s->ext.status_type; in ssl3_ctrl()
3525 s->ext.status_type = larg; in ssl3_ctrl()
3530 *(STACK_OF(X509_EXTENSION) **)parg = s->ext.ocsp.exts; in ssl3_ctrl()
3535 s->ext.ocsp.exts = parg; in ssl3_ctrl()
3540 *(STACK_OF(OCSP_RESPID) **)parg = s->ext.ocsp.ids; in ssl3_ctrl()
3545 s->ext.ocsp.ids = parg; in ssl3_ctrl()
3550 *(unsigned char **)parg = s->ext.ocsp.resp; in ssl3_ctrl()
3551 if (s->ext.ocsp.resp_len == 0 in ssl3_ctrl()
3552 || s->ext.ocsp.resp_len > LONG_MAX) in ssl3_ctrl()
3553 return -1; in ssl3_ctrl()
3554 return (long)s->ext.ocsp.resp_len; in ssl3_ctrl()
3557 OPENSSL_free(s->ext.ocsp.resp); in ssl3_ctrl()
3558 s->ext.ocsp.resp = parg; in ssl3_ctrl()
3559 s->ext.ocsp.resp_len = larg; in ssl3_ctrl()
3576 *(STACK_OF(X509) **)parg = s->cert->key->chain; in ssl3_ctrl()
3581 return ssl_cert_select_current(s->cert, (X509 *)parg); in ssl3_ctrl()
3586 if (!s->server) in ssl3_ctrl()
3587 return 0; in ssl3_ctrl()
3588 cipher = s->s3.tmp.new_cipher; in ssl3_ctrl()
3590 return 0; in ssl3_ctrl()
3595 if (cipher->algorithm_auth & (SSL_aNULL | SSL_aSRP)) in ssl3_ctrl()
3597 if (s->s3.tmp.cert == NULL) in ssl3_ctrl()
3598 return 0; in ssl3_ctrl()
3599 s->cert->key = s->s3.tmp.cert; in ssl3_ctrl()
3602 return ssl_cert_set_current(s->cert, larg); in ssl3_ctrl()
3609 if (!s->session) in ssl3_ctrl()
3610 return 0; in ssl3_ctrl()
3611 clist = s->ext.peer_supportedgroups; in ssl3_ctrl()
3612 clistlen = s->ext.peer_supportedgroups_len; in ssl3_ctrl()
3617 for (i = 0; i < clistlen; i++) { in ssl3_ctrl()
3619 = tls1_group_id_lookup(s->ctx, clist[i]); in ssl3_ctrl()
3622 cptr[i] = tls1_group_id2nid(cinf->group_id, 1); in ssl3_ctrl()
3631 return tls1_set_groups(&s->ext.supportedgroups, in ssl3_ctrl()
3632 &s->ext.supportedgroups_len, parg, larg); in ssl3_ctrl()
3635 return tls1_set_groups_list(s->ctx, &s->ext.supportedgroups, in ssl3_ctrl()
3636 &s->ext.supportedgroups_len, parg); in ssl3_ctrl()
3642 if (larg != -1) in ssl3_ctrl()
3650 if (SSL_IS_TLS13(s) && s->s3.did_kex) in ssl3_ctrl()
3651 id = s->s3.group_id; in ssl3_ctrl()
3653 id = s->session->kex_group; in ssl3_ctrl()
3658 return tls1_set_sigalgs(s->cert, parg, larg, 0); in ssl3_ctrl()
3661 return tls1_set_sigalgs_list(s->cert, parg, 0); in ssl3_ctrl()
3664 return tls1_set_sigalgs(s->cert, parg, larg, 1); in ssl3_ctrl()
3667 return tls1_set_sigalgs_list(s->cert, parg, 1); in ssl3_ctrl()
3672 if (s->server || !s->s3.tmp.cert_req) in ssl3_ctrl()
3673 return 0; in ssl3_ctrl()
3675 *pctype = s->s3.tmp.ctype; in ssl3_ctrl()
3676 return s->s3.tmp.ctype_len; in ssl3_ctrl()
3680 if (!s->server) in ssl3_ctrl()
3681 return 0; in ssl3_ctrl()
3682 return ssl3_set_req_cert_type(s->cert, parg, larg); in ssl3_ctrl()
3688 return ssl_cert_set_cert_store(s->cert, parg, 0, larg); in ssl3_ctrl()
3691 return ssl_cert_set_cert_store(s->cert, parg, 1, larg); in ssl3_ctrl()
3694 return ssl_cert_get_cert_store(s->cert, parg, 0); in ssl3_ctrl()
3697 return ssl_cert_get_cert_store(s->cert, parg, 1); in ssl3_ctrl()
3700 if (s->s3.tmp.peer_sigalg == NULL) in ssl3_ctrl()
3701 return 0; in ssl3_ctrl()
3702 *(int *)parg = s->s3.tmp.peer_sigalg->hash; in ssl3_ctrl()
3706 if (s->s3.tmp.sigalg == NULL) in ssl3_ctrl()
3707 return 0; in ssl3_ctrl()
3708 *(int *)parg = s->s3.tmp.sigalg->hash; in ssl3_ctrl()
3712 if (s->session == NULL || s->s3.peer_tmp == NULL) { in ssl3_ctrl()
3713 return 0; in ssl3_ctrl()
3715 EVP_PKEY_up_ref(s->s3.peer_tmp); in ssl3_ctrl()
3716 *(EVP_PKEY **)parg = s->s3.peer_tmp; in ssl3_ctrl()
3721 if (s->session == NULL || s->s3.tmp.pkey == NULL) { in ssl3_ctrl()
3722 return 0; in ssl3_ctrl()
3724 EVP_PKEY_up_ref(s->s3.tmp.pkey); in ssl3_ctrl()
3725 *(EVP_PKEY **)parg = s->s3.tmp.pkey; in ssl3_ctrl()
3733 if (s->ext.peer_ecpointformats == NULL) in ssl3_ctrl()
3734 return 0; in ssl3_ctrl()
3735 *pformat = s->ext.peer_ecpointformats; in ssl3_ctrl()
3736 return (int)s->ext.peer_ecpointformats_len; in ssl3_ctrl()
3747 int ret = 0; in ssl3_callback_ctrl()
3752 s->cert->dh_tmp_cb = (DH *(*)(SSL *, int, int))fp; in ssl3_callback_ctrl()
3757 s->ext.debug_cb = (void (*)(SSL *, int, int, in ssl3_callback_ctrl()
3763 s->not_resumable_session_cb = (int (*)(SSL *, int))fp; in ssl3_callback_ctrl()
3781 return 0; in ssl3_ctx_ctrl()
3786 return 0; in ssl3_ctx_ctrl()
3790 return 0; in ssl3_ctx_ctrl()
3797 return 0; in ssl3_ctx_ctrl()
3801 ctx->cert->dh_tmp_auto = larg; in ssl3_ctx_ctrl()
3808 return 0; in ssl3_ctx_ctrl()
3810 return ssl_set_tmp_ecdh_groups(&ctx->ext.supportedgroups, in ssl3_ctx_ctrl()
3811 &ctx->ext.supportedgroups_len, in ssl3_ctx_ctrl()
3816 ctx->ext.servername_arg = parg; in ssl3_ctx_ctrl()
3822 long tick_keylen = (sizeof(ctx->ext.tick_key_name) + in ssl3_ctx_ctrl()
3823 sizeof(ctx->ext.secure->tick_hmac_key) + in ssl3_ctx_ctrl()
3824 sizeof(ctx->ext.secure->tick_aes_key)); in ssl3_ctx_ctrl()
3829 return 0; in ssl3_ctx_ctrl()
3832 memcpy(ctx->ext.tick_key_name, keys, in ssl3_ctx_ctrl()
3833 sizeof(ctx->ext.tick_key_name)); in ssl3_ctx_ctrl()
3834 memcpy(ctx->ext.secure->tick_hmac_key, in ssl3_ctx_ctrl()
3835 keys + sizeof(ctx->ext.tick_key_name), in ssl3_ctx_ctrl()
3836 sizeof(ctx->ext.secure->tick_hmac_key)); in ssl3_ctx_ctrl()
3837 memcpy(ctx->ext.secure->tick_aes_key, in ssl3_ctx_ctrl()
3838 keys + sizeof(ctx->ext.tick_key_name) + in ssl3_ctx_ctrl()
3839 sizeof(ctx->ext.secure->tick_hmac_key), in ssl3_ctx_ctrl()
3840 sizeof(ctx->ext.secure->tick_aes_key)); in ssl3_ctx_ctrl()
3842 memcpy(keys, ctx->ext.tick_key_name, in ssl3_ctx_ctrl()
3843 sizeof(ctx->ext.tick_key_name)); in ssl3_ctx_ctrl()
3844 memcpy(keys + sizeof(ctx->ext.tick_key_name), in ssl3_ctx_ctrl()
3845 ctx->ext.secure->tick_hmac_key, in ssl3_ctx_ctrl()
3846 sizeof(ctx->ext.secure->tick_hmac_key)); in ssl3_ctx_ctrl()
3847 memcpy(keys + sizeof(ctx->ext.tick_key_name) + in ssl3_ctx_ctrl()
3848 sizeof(ctx->ext.secure->tick_hmac_key), in ssl3_ctx_ctrl()
3849 ctx->ext.secure->tick_aes_key, in ssl3_ctx_ctrl()
3850 sizeof(ctx->ext.secure->tick_aes_key)); in ssl3_ctx_ctrl()
3856 return ctx->ext.status_type; in ssl3_ctx_ctrl()
3859 ctx->ext.status_type = larg; in ssl3_ctx_ctrl()
3863 ctx->ext.status_arg = parg; in ssl3_ctx_ctrl()
3867 *(void**)parg = ctx->ext.status_arg; in ssl3_ctx_ctrl()
3871 *(int (**)(SSL*, void*))parg = ctx->ext.status_cb; in ssl3_ctx_ctrl()
3876 ctx->srp_ctx.srp_Mask |= SSL_kSRP; in ssl3_ctx_ctrl()
3877 OPENSSL_free(ctx->srp_ctx.login); in ssl3_ctx_ctrl()
3878 ctx->srp_ctx.login = NULL; in ssl3_ctx_ctrl()
3883 return 0; in ssl3_ctx_ctrl()
3885 if ((ctx->srp_ctx.login = OPENSSL_strdup((char *)parg)) == NULL) { in ssl3_ctx_ctrl()
3887 return 0; in ssl3_ctx_ctrl()
3891 ctx->srp_ctx.SRP_give_srp_client_pwd_callback = in ssl3_ctx_ctrl()
3893 if (ctx->srp_ctx.info != NULL) in ssl3_ctx_ctrl()
3894 OPENSSL_free(ctx->srp_ctx.info); in ssl3_ctx_ctrl()
3895 if ((ctx->srp_ctx.info = OPENSSL_strdup((char *)parg)) == NULL) { in ssl3_ctx_ctrl()
3897 return 0; in ssl3_ctx_ctrl()
3901 ctx->srp_ctx.srp_Mask |= SSL_kSRP; in ssl3_ctx_ctrl()
3902 ctx->srp_ctx.SRP_cb_arg = parg; in ssl3_ctx_ctrl()
3906 ctx->srp_ctx.strength = larg; in ssl3_ctx_ctrl()
3911 return tls1_set_groups(&ctx->ext.supportedgroups, in ssl3_ctx_ctrl()
3912 &ctx->ext.supportedgroups_len, in ssl3_ctx_ctrl()
3916 return tls1_set_groups_list(ctx, &ctx->ext.supportedgroups, in ssl3_ctx_ctrl()
3917 &ctx->ext.supportedgroups_len, in ssl3_ctx_ctrl()
3921 return tls1_set_sigalgs(ctx->cert, parg, larg, 0); in ssl3_ctx_ctrl()
3924 return tls1_set_sigalgs_list(ctx->cert, parg, 0); in ssl3_ctx_ctrl()
3927 return tls1_set_sigalgs(ctx->cert, parg, larg, 1); in ssl3_ctx_ctrl()
3930 return tls1_set_sigalgs_list(ctx->cert, parg, 1); in ssl3_ctx_ctrl()
3933 return ssl3_set_req_cert_type(ctx->cert, parg, larg); in ssl3_ctx_ctrl()
3939 return ssl_cert_set_cert_store(ctx->cert, parg, 0, larg); in ssl3_ctx_ctrl()
3942 return ssl_cert_set_cert_store(ctx->cert, parg, 1, larg); in ssl3_ctx_ctrl()
3945 return ssl_cert_get_cert_store(ctx->cert, parg, 0); in ssl3_ctx_ctrl()
3948 return ssl_cert_get_cert_store(ctx->cert, parg, 1); in ssl3_ctx_ctrl()
3950 /* A Thawte special :-) */ in ssl3_ctx_ctrl()
3952 if (ctx->extra_certs == NULL) { in ssl3_ctx_ctrl()
3953 if ((ctx->extra_certs = sk_X509_new_null()) == NULL) { in ssl3_ctx_ctrl()
3955 return 0; in ssl3_ctx_ctrl()
3958 if (!sk_X509_push(ctx->extra_certs, (X509 *)parg)) { in ssl3_ctx_ctrl()
3960 return 0; in ssl3_ctx_ctrl()
3965 if (ctx->extra_certs == NULL && larg == 0) in ssl3_ctx_ctrl()
3966 *(STACK_OF(X509) **)parg = ctx->cert->key->chain; in ssl3_ctx_ctrl()
3968 *(STACK_OF(X509) **)parg = ctx->extra_certs; in ssl3_ctx_ctrl()
3972 sk_X509_pop_free(ctx->extra_certs, X509_free); in ssl3_ctx_ctrl()
3973 ctx->extra_certs = NULL; in ssl3_ctx_ctrl()
3989 *(STACK_OF(X509) **)parg = ctx->cert->key->chain; in ssl3_ctx_ctrl()
3993 return ssl_cert_select_current(ctx->cert, (X509 *)parg); in ssl3_ctx_ctrl()
3996 return ssl_cert_set_current(ctx->cert, larg); in ssl3_ctx_ctrl()
3999 return 0; in ssl3_ctx_ctrl()
4010 ctx->cert->dh_tmp_cb = (DH *(*)(SSL *, int, int))fp; in ssl3_ctx_callback_ctrl()
4015 ctx->ext.servername_cb = (int (*)(SSL *, int *, void *))fp; in ssl3_ctx_callback_ctrl()
4019 ctx->ext.status_cb = (int (*)(SSL *, void *))fp; in ssl3_ctx_callback_ctrl()
4024 ctx->ext.ticket_key_cb = (int (*)(SSL *, unsigned char *, in ssl3_ctx_callback_ctrl()
4033 ctx->srp_ctx.srp_Mask |= SSL_kSRP; in ssl3_ctx_callback_ctrl()
4034 ctx->srp_ctx.SRP_verify_param_callback = (int (*)(SSL *, void *))fp; in ssl3_ctx_callback_ctrl()
4037 ctx->srp_ctx.srp_Mask |= SSL_kSRP; in ssl3_ctx_callback_ctrl()
4038 ctx->srp_ctx.TLS_ext_srp_username_callback = in ssl3_ctx_callback_ctrl()
4042 ctx->srp_ctx.srp_Mask |= SSL_kSRP; in ssl3_ctx_callback_ctrl()
4043 ctx->srp_ctx.SRP_give_srp_client_pwd_callback = in ssl3_ctx_callback_ctrl()
4049 ctx->not_resumable_session_cb = (int (*)(SSL *, int))fp; in ssl3_ctx_callback_ctrl()
4053 return 0; in ssl3_ctx_callback_ctrl()
4062 ctx->ext.ticket_key_evp_cb = fp; in SSL_CTX_set_tlsext_ticket_key_evp_cb()
4089 for (j = 0; j < OSSL_NELEM(alltabs); j++) { in ssl3_get_cipher_by_std_name()
4090 for (i = 0, tbl = alltabs[j]; i < tblsize[j]; i++, tbl++) { in ssl3_get_cipher_by_std_name()
4091 if (tbl->stdname == NULL) in ssl3_get_cipher_by_std_name()
4093 if (strcmp(stdname, tbl->stdname) == 0) { in ssl3_get_cipher_by_std_name()
4108 | ((uint32_t)p[0] << 8L) in ssl3_get_cipher_by_char()
4114 if ((c->id & 0xff000000) != SSL3_CK_CIPHERSUITE_FLAG) { in ssl3_put_cipher_by_char()
4115 *len = 0; in ssl3_put_cipher_by_char()
4119 if (!WPACKET_put_bytes_u16(pkt, c->id & 0xffff)) in ssl3_put_cipher_by_char()
4120 return 0; in ssl3_put_cipher_by_char()
4127 * ssl3_choose_cipher - choose a cipher from those offered by the client
4139 int i, ii, ok, prefer_sha256 = 0; in ssl3_choose_cipher()
4140 unsigned long alg_k = 0, alg_a = 0, mask_k = 0, mask_a = 0; in ssl3_choose_cipher()
4155 for (i = 0; i < sk_SSL_CIPHER_num(srvr); ++i) { in ssl3_choose_cipher()
4157 BIO_printf(trc_out, "%p:%s\n", (void *)c, c->name); in ssl3_choose_cipher()
4161 for (i = 0; i < sk_SSL_CIPHER_num(clnt); ++i) { in ssl3_choose_cipher()
4163 BIO_printf(trc_out, "%p:%s\n", (void *)c, c->name); in ssl3_choose_cipher()
4167 /* SUITE-B takes precedence over server preference and ChaCha priortiy */ in ssl3_choose_cipher()
4171 } else if (s->options & SSL_OP_CIPHER_SERVER_PREFERENCE) { in ssl3_choose_cipher()
4178 if (s->options & SSL_OP_PRIORITIZE_CHACHA && sk_SSL_CIPHER_num(clnt) > 0) { in ssl3_choose_cipher()
4179 c = sk_SSL_CIPHER_value(clnt, 0); in ssl3_choose_cipher()
4180 if (c->algorithm_enc == SSL_CHACHA20POLY1305) { in ssl3_choose_cipher()
4183 int found = 0; in ssl3_choose_cipher()
4184 for (i = 0; i < num; i++) { in ssl3_choose_cipher()
4186 if (c->algorithm_enc == SSL_CHACHA20POLY1305) { in ssl3_choose_cipher()
4199 if (c->algorithm_enc == SSL_CHACHA20POLY1305) in ssl3_choose_cipher()
4203 for (i = 0; i < num; i++) { in ssl3_choose_cipher()
4205 if (c->algorithm_enc != SSL_CHACHA20POLY1305) in ssl3_choose_cipher()
4225 * TLSv1.3 then the default hash for a PSK is SHA-256 (as per the in ssl3_choose_cipher()
4229 if (s->psk_server_callback != NULL) { in ssl3_choose_cipher()
4230 for (j = 0; j < SSL_PKEY_NUM && !ssl_has_cert(s, j); j++); in ssl3_choose_cipher()
4242 for (i = 0; i < sk_SSL_CIPHER_num(prio); i++) { in ssl3_choose_cipher()
4247 ((s->version < c->min_tls) || (s->version > c->max_tls))) in ssl3_choose_cipher()
4250 (DTLS_VERSION_LT(s->version, c->min_dtls) || in ssl3_choose_cipher()
4251 DTLS_VERSION_GT(s->version, c->max_dtls))) in ssl3_choose_cipher()
4259 mask_k = s->s3.tmp.mask_k; in ssl3_choose_cipher()
4260 mask_a = s->s3.tmp.mask_a; in ssl3_choose_cipher()
4262 if (s->srp_ctx.srp_Mask & SSL_kSRP) { in ssl3_choose_cipher()
4268 alg_k = c->algorithm_mkey; in ssl3_choose_cipher()
4269 alg_a = c->algorithm_auth; in ssl3_choose_cipher()
4273 if ((alg_k & SSL_PSK) && s->psk_server_callback == NULL) in ssl3_choose_cipher()
4280 ok, alg_k, alg_a, mask_k, mask_a, (void *)c, c->name); in ssl3_choose_cipher()
4287 ok = ok && tls1_check_ec_tmp_key(s, c->id); in ssl3_choose_cipher()
4293 if (ii >= 0) { in ssl3_choose_cipher()
4296 c->strength_bits, 0, (void *)c)) in ssl3_choose_cipher()
4300 && s->s3.is_probably_safari) { in ssl3_choose_cipher()
4308 const EVP_MD *md = ssl_md(s->ctx, tmp->algorithm2); in ssl3_choose_cipher()
4331 uint32_t alg_k, alg_a = 0; in ssl3_get_req_cert_type()
4334 if (s->cert->ctype) in ssl3_get_req_cert_type()
4335 return WPACKET_memcpy(pkt, s->cert->ctype, s->cert->ctype_len); in ssl3_get_req_cert_type()
4339 alg_k = s->s3.tmp.new_cipher->algorithm_mkey; in ssl3_get_req_cert_type()
4342 if (s->version >= TLS1_VERSION && (alg_k & SSL_kGOST)) in ssl3_get_req_cert_type()
4348 return 0; in ssl3_get_req_cert_type()
4350 if (s->version >= TLS1_2_VERSION && (alg_k & SSL_kGOST18)) in ssl3_get_req_cert_type()
4353 return 0; in ssl3_get_req_cert_type()
4356 if ((s->version == SSL3_VERSION) && (alg_k & SSL_kDHE)) { in ssl3_get_req_cert_type()
4358 return 0; in ssl3_get_req_cert_type()
4361 return 0; in ssl3_get_req_cert_type()
4364 return 0; in ssl3_get_req_cert_type()
4366 return 0; in ssl3_get_req_cert_type()
4372 if (s->version >= TLS1_VERSION in ssl3_get_req_cert_type()
4375 return 0; in ssl3_get_req_cert_type()
4382 OPENSSL_free(c->ctype); in ssl3_set_req_cert_type()
4383 c->ctype = NULL; in ssl3_set_req_cert_type()
4384 c->ctype_len = 0; in ssl3_set_req_cert_type()
4385 if (p == NULL || len == 0) in ssl3_set_req_cert_type()
4387 if (len > 0xff) in ssl3_set_req_cert_type()
4388 return 0; in ssl3_set_req_cert_type()
4389 c->ctype = OPENSSL_memdup(p, len); in ssl3_set_req_cert_type()
4390 if (c->ctype == NULL) in ssl3_set_req_cert_type()
4391 return 0; in ssl3_set_req_cert_type()
4392 c->ctype_len = len; in ssl3_set_req_cert_type()
4402 * want to send messages :-) in ssl3_shutdown()
4404 if (s->quiet_shutdown || SSL_in_before(s)) { in ssl3_shutdown()
4405 s->shutdown = (SSL_SENT_SHUTDOWN | SSL_RECEIVED_SHUTDOWN); in ssl3_shutdown()
4409 if (!(s->shutdown & SSL_SENT_SHUTDOWN)) { in ssl3_shutdown()
4410 s->shutdown |= SSL_SENT_SHUTDOWN; in ssl3_shutdown()
4414 * written, s->s3.alert_dispatch will be true in ssl3_shutdown()
4416 if (s->s3.alert_dispatch) in ssl3_shutdown()
4417 return -1; /* return WANT_WRITE */ in ssl3_shutdown()
4418 } else if (s->s3.alert_dispatch) { in ssl3_shutdown()
4420 ret = s->method->ssl_dispatch_alert(s); in ssl3_shutdown()
4421 if (ret == -1) { in ssl3_shutdown()
4423 * we only get to return -1 here the 2nd/Nth invocation, we must in ssl3_shutdown()
4424 * have already signalled return 0 upon a previous invocation, in ssl3_shutdown()
4429 } else if (!(s->shutdown & SSL_RECEIVED_SHUTDOWN)) { in ssl3_shutdown()
4434 s->method->ssl_read_bytes(s, 0, NULL, NULL, 0, 0, &readbytes); in ssl3_shutdown()
4435 if (!(s->shutdown & SSL_RECEIVED_SHUTDOWN)) { in ssl3_shutdown()
4436 return -1; /* return WANT_READ */ in ssl3_shutdown()
4440 if ((s->shutdown == (SSL_SENT_SHUTDOWN | SSL_RECEIVED_SHUTDOWN)) && in ssl3_shutdown()
4441 !s->s3.alert_dispatch) in ssl3_shutdown()
4444 return 0; in ssl3_shutdown()
4450 if (s->s3.renegotiate) in ssl3_write()
4451 ssl3_renegotiate_check(s, 0); in ssl3_write()
4453 return s->method->ssl_write_bytes(s, SSL3_RT_APPLICATION_DATA, buf, len, in ssl3_write()
4463 if (s->s3.renegotiate) in ssl3_read_internal()
4464 ssl3_renegotiate_check(s, 0); in ssl3_read_internal()
4465 s->s3.in_read_app_data = 1; in ssl3_read_internal()
4467 s->method->ssl_read_bytes(s, SSL3_RT_APPLICATION_DATA, NULL, buf, len, in ssl3_read_internal()
4469 if ((ret == -1) && (s->s3.in_read_app_data == 2)) { in ssl3_read_internal()
4471 * ssl3_read_bytes decided to call s->handshake_func, which called in ssl3_read_internal()
4479 s->method->ssl_read_bytes(s, SSL3_RT_APPLICATION_DATA, NULL, buf, in ssl3_read_internal()
4481 ossl_statem_set_in_handshake(s, 0); in ssl3_read_internal()
4483 s->s3.in_read_app_data = 0; in ssl3_read_internal()
4490 return ssl3_read_internal(s, buf, len, 0, readbytes); in ssl3_read()
4500 if (s->handshake_func == NULL) in ssl3_renegotiate()
4503 s->s3.renegotiate = 1; in ssl3_renegotiate()
4513 * returns 0.
4517 int ret = 0; in ssl3_renegotiate_check()
4519 if (s->s3.renegotiate) { in ssl3_renegotiate_check()
4520 if (!RECORD_LAYER_read_pending(&s->rlayer) in ssl3_renegotiate_check()
4521 && !RECORD_LAYER_write_pending(&s->rlayer) in ssl3_renegotiate_check()
4529 s->s3.renegotiate = 0; in ssl3_renegotiate_check()
4530 s->s3.num_renegotiations++; in ssl3_renegotiate_check()
4531 s->s3.total_renegotiations++; in ssl3_renegotiate_check()
4547 if (s->s3.tmp.new_cipher == NULL) in ssl_get_algorithm2()
4548 return -1; in ssl_get_algorithm2()
4549 alg2 = s->s3.tmp.new_cipher->algorithm2; in ssl_get_algorithm2()
4550 if (s->method->ssl3_enc->enc_flags & SSL_ENC_FLAG_SHA256_PRF) { in ssl_get_algorithm2()
4553 } else if (s->s3.tmp.new_cipher->algorithm_mkey & SSL_PSK) { in ssl_get_algorithm2()
4561 * Fill a ClientRandom or ServerRandom field of length len. Returns <= 0 on
4567 int send_time = 0, ret; in ssl_fill_hello_random()
4570 return 0; in ssl_fill_hello_random()
4572 send_time = (s->mode & SSL_MODE_SEND_SERVERHELLO_TIME) != 0; in ssl_fill_hello_random()
4574 send_time = (s->mode & SSL_MODE_SEND_CLIENTHELLO_TIME) != 0; in ssl_fill_hello_random()
4580 ret = RAND_bytes_ex(s->ctx->libctx, p, len - 4, 0); in ssl_fill_hello_random()
4582 ret = RAND_bytes_ex(s->ctx->libctx, result, len, 0); in ssl_fill_hello_random()
4585 if (ret > 0) { in ssl_fill_hello_random()
4588 return 0; in ssl_fill_hello_random()
4590 memcpy(result + len - sizeof(tls12downgrade), tls12downgrade, in ssl_fill_hello_random()
4593 memcpy(result + len - sizeof(tls11downgrade), tls11downgrade, in ssl_fill_hello_random()
4603 unsigned long alg_k = s->s3.tmp.new_cipher->algorithm_mkey; in ssl_generate_master_secret()
4604 int ret = 0; in ssl_generate_master_secret()
4609 size_t psklen = s->s3.tmp.psklen; in ssl_generate_master_secret()
4625 memset(t, 0, pmslen); in ssl_generate_master_secret()
4630 memcpy(t, s->s3.tmp.psk, psklen); in ssl_generate_master_secret()
4632 OPENSSL_clear_free(s->s3.tmp.psk, psklen); in ssl_generate_master_secret()
4633 s->s3.tmp.psk = NULL; in ssl_generate_master_secret()
4634 s->s3.tmp.psklen = 0; in ssl_generate_master_secret()
4635 if (!s->method->ssl3_enc->generate_master_secret(s, in ssl_generate_master_secret()
4636 s->session->master_key, pskpms, pskpmslen, in ssl_generate_master_secret()
4637 &s->session->master_key_length)) { in ssl_generate_master_secret()
4648 if (!s->method->ssl3_enc->generate_master_secret(s, in ssl_generate_master_secret()
4649 s->session->master_key, pms, pmslen, in ssl_generate_master_secret()
4650 &s->session->master_key_length)) { in ssl_generate_master_secret()
4664 if (s->server == 0) { in ssl_generate_master_secret()
4665 s->s3.tmp.pms = NULL; in ssl_generate_master_secret()
4666 s->s3.tmp.pmslen = 0; in ssl_generate_master_secret()
4679 pctx = EVP_PKEY_CTX_new_from_pkey(s->ctx->libctx, pm, s->ctx->propq); in ssl_generate_pkey()
4682 if (EVP_PKEY_keygen_init(pctx) <= 0) in ssl_generate_pkey()
4684 if (EVP_PKEY_keygen(pctx, &pkey) <= 0) { in ssl_generate_pkey()
4697 const TLS_GROUP_INFO *ginf = tls1_group_id_lookup(s->ctx, id); in ssl_generate_pkey_group()
4706 pctx = EVP_PKEY_CTX_new_from_name(s->ctx->libctx, ginf->algorithm, in ssl_generate_pkey_group()
4707 s->ctx->propq); in ssl_generate_pkey_group()
4713 if (EVP_PKEY_keygen_init(pctx) <= 0) { in ssl_generate_pkey_group()
4717 if (EVP_PKEY_CTX_set_group_name(pctx, ginf->realname) <= 0) { in ssl_generate_pkey_group()
4721 if (EVP_PKEY_keygen(pctx, &pkey) <= 0) { in ssl_generate_pkey_group()
4739 const TLS_GROUP_INFO *ginf = tls1_group_id_lookup(s->ctx, id); in ssl_generate_param_group()
4744 pctx = EVP_PKEY_CTX_new_from_name(s->ctx->libctx, ginf->algorithm, in ssl_generate_param_group()
4745 s->ctx->propq); in ssl_generate_param_group()
4749 if (EVP_PKEY_paramgen_init(pctx) <= 0) in ssl_generate_param_group()
4751 if (EVP_PKEY_CTX_set_group_name(pctx, ginf->realname) <= 0) { in ssl_generate_param_group()
4755 if (EVP_PKEY_paramgen(pctx, &pkey) <= 0) { in ssl_generate_param_group()
4768 int rv = 0; in ssl_gensecret()
4776 if (!s->hit) in ssl_gensecret()
4778 0, in ssl_gensecret()
4779 (unsigned char *)&s->early_secret); in ssl_gensecret()
4785 rv = ssl_generate_master_secret(s, pms, pmslen, 0); in ssl_gensecret()
4794 int rv = 0; in ssl_derive()
4796 size_t pmslen = 0; in ssl_derive()
4801 return 0; in ssl_derive()
4804 pctx = EVP_PKEY_CTX_new_from_pkey(s->ctx->libctx, privkey, s->ctx->propq); in ssl_derive()
4806 if (EVP_PKEY_derive_init(pctx) <= 0 in ssl_derive()
4807 || EVP_PKEY_derive_set_peer(pctx, pubkey) <= 0 in ssl_derive()
4808 || EVP_PKEY_derive(pctx, NULL, &pmslen) <= 0) { in ssl_derive()
4822 if (EVP_PKEY_derive(pctx, pms, &pmslen) <= 0) { in ssl_derive()
4832 s->s3.tmp.pms = pms; in ssl_derive()
4833 s->s3.tmp.pmslen = pmslen; in ssl_derive()
4849 int rv = 0; in ssl_decapsulate()
4851 size_t pmslen = 0; in ssl_decapsulate()
4856 return 0; in ssl_decapsulate()
4859 pctx = EVP_PKEY_CTX_new_from_pkey(s->ctx->libctx, privkey, s->ctx->propq); in ssl_decapsulate()
4861 if (EVP_PKEY_decapsulate_init(pctx, NULL) <= 0 in ssl_decapsulate()
4862 || EVP_PKEY_decapsulate(pctx, NULL, &pmslen, ct, ctlen) <= 0) { in ssl_decapsulate()
4873 if (EVP_PKEY_decapsulate(pctx, pms, &pmslen, ct, ctlen) <= 0) { in ssl_decapsulate()
4883 s->s3.tmp.pms = pms; in ssl_decapsulate()
4884 s->s3.tmp.pmslen = pmslen; in ssl_decapsulate()
4899 int rv = 0; in ssl_encapsulate()
4901 size_t pmslen = 0, ctlen = 0; in ssl_encapsulate()
4906 return 0; in ssl_encapsulate()
4909 pctx = EVP_PKEY_CTX_new_from_pkey(s->ctx->libctx, pubkey, s->ctx->propq); in ssl_encapsulate()
4911 if (EVP_PKEY_encapsulate_init(pctx, NULL) <= 0 in ssl_encapsulate()
4912 || EVP_PKEY_encapsulate(pctx, NULL, &ctlen, NULL, &pmslen) <= 0 in ssl_encapsulate()
4913 || pmslen == 0 || ctlen == 0) { in ssl_encapsulate()
4925 if (EVP_PKEY_encapsulate(pctx, ct, &ctlen, pms, &pmslen) <= 0) { in ssl_encapsulate()
4935 s->s3.tmp.pms = pms; in ssl_encapsulate()
4936 s->s3.tmp.pmslen = pmslen; in ssl_encapsulate()
4941 if (rv > 0) { in ssl_encapsulate()
4956 int group_id = 0; in SSL_group_to_name()
4961 group_id = nid & 0xFFFF; in SSL_group_to_name()
4966 cinf = tls1_group_id_lookup(s->ctx, group_id); in SSL_group_to_name()
4969 return cinf->tlsname; in SSL_group_to_name()