summaryrefslogtreecommitdiff
path: root/src/lib/libssl/s3_lib.c
diff options
context:
space:
mode:
authorbeck <>2000-04-15 06:18:51 +0000
committerbeck <>2000-04-15 06:18:51 +0000
commitb608c7f2b175e121f2c22d53341a317153afdc8e (patch)
treee94b160b3fcd8180df79e4251d68d24d665f0195 /src/lib/libssl/s3_lib.c
parentc8d6701c396cebdcd0d45eac73b762e9498f6b01 (diff)
downloadopenbsd-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.c61
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: