diff options
| author | beck <> | 2000-04-15 06:18:51 +0000 |
|---|---|---|
| committer | beck <> | 2000-04-15 06:18:51 +0000 |
| commit | b608c7f2b175e121f2c22d53341a317153afdc8e (patch) | |
| tree | e94b160b3fcd8180df79e4251d68d24d665f0195 /src/lib/libssl/s3_lib.c | |
| parent | c8d6701c396cebdcd0d45eac73b762e9498f6b01 (diff) | |
| download | openbsd-b608c7f2b175e121f2c22d53341a317153afdc8e.tar.gz openbsd-b608c7f2b175e121f2c22d53341a317153afdc8e.tar.bz2 openbsd-b608c7f2b175e121f2c22d53341a317153afdc8e.zip | |
OpenSSL 0.9.5a merge
Diffstat (limited to 'src/lib/libssl/s3_lib.c')
| -rw-r--r-- | src/lib/libssl/s3_lib.c | 61 |
1 files changed, 36 insertions, 25 deletions
diff --git a/src/lib/libssl/s3_lib.c b/src/lib/libssl/s3_lib.c index c4b49aaedf..7ada26cbb6 100644 --- a/src/lib/libssl/s3_lib.c +++ b/src/lib/libssl/s3_lib.c | |||
| @@ -771,14 +771,16 @@ long ssl3_ctrl(SSL *s, int cmd, long larg, char *parg) | |||
| 771 | case SSL_CTRL_SET_TMP_RSA: | 771 | case SSL_CTRL_SET_TMP_RSA: |
| 772 | { | 772 | { |
| 773 | RSA *rsa = (RSA *)parg; | 773 | RSA *rsa = (RSA *)parg; |
| 774 | if (rsa == NULL) { | 774 | if (rsa == NULL) |
| 775 | { | ||
| 775 | SSLerr(SSL_F_SSL3_CTRL, ERR_R_PASSED_NULL_PARAMETER); | 776 | SSLerr(SSL_F_SSL3_CTRL, ERR_R_PASSED_NULL_PARAMETER); |
| 776 | return(ret); | 777 | return(ret); |
| 777 | } | 778 | } |
| 778 | if ((rsa = RSAPrivateKey_dup(rsa)) == NULL) { | 779 | if ((rsa = RSAPrivateKey_dup(rsa)) == NULL) |
| 780 | { | ||
| 779 | SSLerr(SSL_F_SSL3_CTRL, ERR_R_RSA_LIB); | 781 | SSLerr(SSL_F_SSL3_CTRL, ERR_R_RSA_LIB); |
| 780 | return(ret); | 782 | return(ret); |
| 781 | } | 783 | } |
| 782 | if (s->cert->rsa_tmp != NULL) | 784 | if (s->cert->rsa_tmp != NULL) |
| 783 | RSA_free(s->cert->rsa_tmp); | 785 | RSA_free(s->cert->rsa_tmp); |
| 784 | s->cert->rsa_tmp = rsa; | 786 | s->cert->rsa_tmp = rsa; |
| @@ -796,19 +798,25 @@ long ssl3_ctrl(SSL *s, int cmd, long larg, char *parg) | |||
| 796 | case SSL_CTRL_SET_TMP_DH: | 798 | case SSL_CTRL_SET_TMP_DH: |
| 797 | { | 799 | { |
| 798 | DH *dh = (DH *)parg; | 800 | DH *dh = (DH *)parg; |
| 799 | if (dh == NULL) { | 801 | if (dh == NULL) |
| 802 | { | ||
| 800 | SSLerr(SSL_F_SSL3_CTRL, ERR_R_PASSED_NULL_PARAMETER); | 803 | SSLerr(SSL_F_SSL3_CTRL, ERR_R_PASSED_NULL_PARAMETER); |
| 801 | return(ret); | 804 | return(ret); |
| 802 | } | 805 | } |
| 803 | if ((dh = DHparams_dup(dh)) == NULL) { | 806 | if ((dh = DHparams_dup(dh)) == NULL) |
| 804 | SSLerr(SSL_F_SSL3_CTRL, ERR_R_DH_LIB); | 807 | { |
| 805 | return(ret); | ||
| 806 | } | ||
| 807 | if (!DH_generate_key(dh)) { | ||
| 808 | DH_free(dh); | ||
| 809 | SSLerr(SSL_F_SSL3_CTRL, ERR_R_DH_LIB); | 808 | SSLerr(SSL_F_SSL3_CTRL, ERR_R_DH_LIB); |
| 810 | return(ret); | 809 | return(ret); |
| 811 | } | 810 | } |
| 811 | if (!(s->options & SSL_OP_SINGLE_DH_USE)) | ||
| 812 | { | ||
| 813 | if (!DH_generate_key(dh)) | ||
| 814 | { | ||
| 815 | DH_free(dh); | ||
| 816 | SSLerr(SSL_F_SSL3_CTRL, ERR_R_DH_LIB); | ||
| 817 | return(ret); | ||
| 818 | } | ||
| 819 | } | ||
| 812 | if (s->cert->dh_tmp != NULL) | 820 | if (s->cert->dh_tmp != NULL) |
| 813 | DH_free(s->cert->dh_tmp); | 821 | DH_free(s->cert->dh_tmp); |
| 814 | s->cert->dh_tmp = dh; | 822 | s->cert->dh_tmp = dh; |
| @@ -843,8 +851,8 @@ long ssl3_callback_ctrl(SSL *s, int cmd, void (*fp)()) | |||
| 843 | 0) | 851 | 0) |
| 844 | { | 852 | { |
| 845 | if (!ssl_cert_inst(&s->cert)) | 853 | if (!ssl_cert_inst(&s->cert)) |
| 846 | { | 854 | { |
| 847 | SSLerr(SSL_F_SSL3_CTRL, ERR_R_MALLOC_FAILURE); | 855 | SSLerr(SSL_F_SSL3_CALLBACK_CTRL, ERR_R_MALLOC_FAILURE); |
| 848 | return(0); | 856 | return(0); |
| 849 | } | 857 | } |
| 850 | } | 858 | } |
| @@ -929,23 +937,26 @@ long ssl3_ctx_ctrl(SSL_CTX *ctx, int cmd, long larg, char *parg) | |||
| 929 | case SSL_CTRL_SET_TMP_DH: | 937 | case SSL_CTRL_SET_TMP_DH: |
| 930 | { | 938 | { |
| 931 | DH *new=NULL,*dh; | 939 | DH *new=NULL,*dh; |
| 932 | int rret=0; | ||
| 933 | 940 | ||
| 934 | dh=(DH *)parg; | 941 | dh=(DH *)parg; |
| 935 | if ( ((new=DHparams_dup(dh)) == NULL) || | 942 | if ((new=DHparams_dup(dh)) == NULL) |
| 936 | (!DH_generate_key(new))) | ||
| 937 | { | 943 | { |
| 938 | SSLerr(SSL_F_SSL3_CTX_CTRL,ERR_R_DH_LIB); | 944 | SSLerr(SSL_F_SSL3_CTX_CTRL,ERR_R_DH_LIB); |
| 939 | if (new != NULL) DH_free(new); | 945 | return 0; |
| 940 | } | 946 | } |
| 941 | else | 947 | if (!(ctx->options & SSL_OP_SINGLE_DH_USE)) |
| 942 | { | 948 | { |
| 943 | if (cert->dh_tmp != NULL) | 949 | if (!DH_generate_key(new)) |
| 944 | DH_free(cert->dh_tmp); | 950 | { |
| 945 | cert->dh_tmp=new; | 951 | SSLerr(SSL_F_SSL3_CTX_CTRL,ERR_R_DH_LIB); |
| 946 | rret=1; | 952 | DH_free(new); |
| 953 | return 0; | ||
| 954 | } | ||
| 947 | } | 955 | } |
| 948 | return(rret); | 956 | if (cert->dh_tmp != NULL) |
| 957 | DH_free(cert->dh_tmp); | ||
| 958 | cert->dh_tmp=new; | ||
| 959 | return 1; | ||
| 949 | } | 960 | } |
| 950 | /*break; */ | 961 | /*break; */ |
| 951 | case SSL_CTRL_SET_TMP_DH_CB: | 962 | case SSL_CTRL_SET_TMP_DH_CB: |
