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: |