Deleted Added
full compact
s2_clnt.c (142428) s2_clnt.c (160817)
1/* ssl/s2_clnt.c */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved.
4 *
5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL.
8 *

--- 123 unchanged lines hidden (view full) ---

132static SSL_METHOD *ssl2_get_client_method(int ver)
133 {
134 if (ver == SSL2_VERSION)
135 return(SSLv2_client_method());
136 else
137 return(NULL);
138 }
139
1/* ssl/s2_clnt.c */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved.
4 *
5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL.
8 *

--- 123 unchanged lines hidden (view full) ---

132static SSL_METHOD *ssl2_get_client_method(int ver)
133 {
134 if (ver == SSL2_VERSION)
135 return(SSLv2_client_method());
136 else
137 return(NULL);
138 }
139
140SSL_METHOD *SSLv2_client_method(void)
141 {
142 static int init=1;
143 static SSL_METHOD SSLv2_client_data;
140IMPLEMENT_ssl2_meth_func(SSLv2_client_method,
141 ssl_undefined_function,
142 ssl2_connect,
143 ssl2_get_client_method)
144
144
145 if (init)
146 {
147 CRYPTO_w_lock(CRYPTO_LOCK_SSL_METHOD);
148
149 if (init)
150 {
151 memcpy((char *)&SSLv2_client_data,(char *)sslv2_base_method(),
152 sizeof(SSL_METHOD));
153 SSLv2_client_data.ssl_connect=ssl2_connect;
154 SSLv2_client_data.get_ssl_method=ssl2_get_client_method;
155 init=0;
156 }
157
158 CRYPTO_w_unlock(CRYPTO_LOCK_SSL_METHOD);
159 }
160 return(&SSLv2_client_data);
161 }
162
163int ssl2_connect(SSL *s)
164 {
145int ssl2_connect(SSL *s)
146 {
165 unsigned long l=time(NULL);
147 unsigned long l=(unsigned long)time(NULL);
166 BUF_MEM *buf=NULL;
167 int ret= -1;
168 void (*cb)(const SSL *ssl,int type,int val)=NULL;
169 int new_state,state;
170
171 RAND_add(&l,sizeof(l),0);
172 ERR_clear_error();
173 clear_sys_error();

--- 405 unchanged lines hidden (view full) ---

579 /* else use the pre-loaded session */
580
581 p=buf; /* header */
582 d=p+9; /* data section */
583 *(p++)=SSL2_MT_CLIENT_HELLO; /* type */
584 s2n(SSL2_VERSION,p); /* version */
585 n=j=0;
586
148 BUF_MEM *buf=NULL;
149 int ret= -1;
150 void (*cb)(const SSL *ssl,int type,int val)=NULL;
151 int new_state,state;
152
153 RAND_add(&l,sizeof(l),0);
154 ERR_clear_error();
155 clear_sys_error();

--- 405 unchanged lines hidden (view full) ---

561 /* else use the pre-loaded session */
562
563 p=buf; /* header */
564 d=p+9; /* data section */
565 *(p++)=SSL2_MT_CLIENT_HELLO; /* type */
566 s2n(SSL2_VERSION,p); /* version */
567 n=j=0;
568
587 n=ssl_cipher_list_to_bytes(s,SSL_get_ciphers(s),d);
569 n=ssl_cipher_list_to_bytes(s,SSL_get_ciphers(s),d,0);
588 d+=n;
589
590 if (n == 0)
591 {
592 SSLerr(SSL_F_CLIENT_HELLO,SSL_R_NO_CIPHERS_AVAILABLE);
593 return(-1);
594 }
595

--- 11 unchanged lines hidden (view full) ---

607 else
608 {
609 s2n(0,p);
610 }
611
612 s->s2->challenge_length=SSL2_CHALLENGE_LENGTH;
613 s2n(SSL2_CHALLENGE_LENGTH,p); /* challenge length */
614 /*challenge id data*/
570 d+=n;
571
572 if (n == 0)
573 {
574 SSLerr(SSL_F_CLIENT_HELLO,SSL_R_NO_CIPHERS_AVAILABLE);
575 return(-1);
576 }
577

--- 11 unchanged lines hidden (view full) ---

589 else
590 {
591 s2n(0,p);
592 }
593
594 s->s2->challenge_length=SSL2_CHALLENGE_LENGTH;
595 s2n(SSL2_CHALLENGE_LENGTH,p); /* challenge length */
596 /*challenge id data*/
615 if(RAND_pseudo_bytes(s->s2->challenge,SSL2_CHALLENGE_LENGTH) <= 0)
597 if (RAND_pseudo_bytes(s->s2->challenge,SSL2_CHALLENGE_LENGTH) <= 0)
616 return -1;
617 memcpy(d,s->s2->challenge,SSL2_CHALLENGE_LENGTH);
618 d+=SSL2_CHALLENGE_LENGTH;
619
620 s->state=SSL2_ST_SEND_CLIENT_HELLO_B;
621 s->init_num=d-buf;
622 s->init_off=0;
623 }

--- 33 unchanged lines hidden (view full) ---

657 sess->key_arg_length=i;
658 if (i > SSL_MAX_KEY_ARG_LENGTH)
659 {
660 ssl2_return_error(s, SSL2_PE_UNDEFINED_ERROR);
661 SSLerr(SSL_F_CLIENT_MASTER_KEY, ERR_R_INTERNAL_ERROR);
662 return -1;
663 }
664 if (i > 0)
598 return -1;
599 memcpy(d,s->s2->challenge,SSL2_CHALLENGE_LENGTH);
600 d+=SSL2_CHALLENGE_LENGTH;
601
602 s->state=SSL2_ST_SEND_CLIENT_HELLO_B;
603 s->init_num=d-buf;
604 s->init_off=0;
605 }

--- 33 unchanged lines hidden (view full) ---

639 sess->key_arg_length=i;
640 if (i > SSL_MAX_KEY_ARG_LENGTH)
641 {
642 ssl2_return_error(s, SSL2_PE_UNDEFINED_ERROR);
643 SSLerr(SSL_F_CLIENT_MASTER_KEY, ERR_R_INTERNAL_ERROR);
644 return -1;
645 }
646 if (i > 0)
665 if(RAND_pseudo_bytes(sess->key_arg,i) <= 0)
647 if (RAND_pseudo_bytes(sess->key_arg,i) <= 0)
666 return -1;
667
668 /* make a master key */
669 i=EVP_CIPHER_key_length(c);
670 sess->master_key_length=i;
671 if (i > 0)
672 {
648 return -1;
649
650 /* make a master key */
651 i=EVP_CIPHER_key_length(c);
652 sess->master_key_length=i;
653 if (i > 0)
654 {
673 if (i > sizeof sess->master_key)
655 if (i > (int)sizeof(sess->master_key))
674 {
675 ssl2_return_error(s, SSL2_PE_UNDEFINED_ERROR);
676 SSLerr(SSL_F_CLIENT_MASTER_KEY, ERR_R_INTERNAL_ERROR);
677 return -1;
678 }
679 if (RAND_bytes(sess->master_key,i) <= 0)
680 {
681 ssl2_return_error(s,SSL2_PE_UNDEFINED_ERROR);
682 return(-1);
683 }
684 }
685
686 if (sess->cipher->algorithm2 & SSL2_CF_8_BYTE_ENC)
687 enc=8;
688 else if (SSL_C_IS_EXPORT(sess->cipher))
689 enc=5;
690 else
691 enc=i;
692
656 {
657 ssl2_return_error(s, SSL2_PE_UNDEFINED_ERROR);
658 SSLerr(SSL_F_CLIENT_MASTER_KEY, ERR_R_INTERNAL_ERROR);
659 return -1;
660 }
661 if (RAND_bytes(sess->master_key,i) <= 0)
662 {
663 ssl2_return_error(s,SSL2_PE_UNDEFINED_ERROR);
664 return(-1);
665 }
666 }
667
668 if (sess->cipher->algorithm2 & SSL2_CF_8_BYTE_ENC)
669 enc=8;
670 else if (SSL_C_IS_EXPORT(sess->cipher))
671 enc=5;
672 else
673 enc=i;
674
693 if (i < enc)
675 if ((int)i < enc)
694 {
695 ssl2_return_error(s,SSL2_PE_UNDEFINED_ERROR);
696 SSLerr(SSL_F_CLIENT_MASTER_KEY,SSL_R_CIPHER_TABLE_SRC_ERROR);
697 return(-1);
698 }
699 clear=i-enc;
700 s2n(clear,p);
701 memcpy(d,sess->master_key,(unsigned int)clear);

--- 12 unchanged lines hidden (view full) ---

714 if (s->options & SSL_OP_PKCS1_CHECK_1) d[1]++;
715 if (s->options & SSL_OP_PKCS1_CHECK_2)
716 sess->master_key[clear]++;
717#endif
718 s2n(enc,p);
719 d+=enc;
720 karg=sess->key_arg_length;
721 s2n(karg,p); /* key arg size */
676 {
677 ssl2_return_error(s,SSL2_PE_UNDEFINED_ERROR);
678 SSLerr(SSL_F_CLIENT_MASTER_KEY,SSL_R_CIPHER_TABLE_SRC_ERROR);
679 return(-1);
680 }
681 clear=i-enc;
682 s2n(clear,p);
683 memcpy(d,sess->master_key,(unsigned int)clear);

--- 12 unchanged lines hidden (view full) ---

696 if (s->options & SSL_OP_PKCS1_CHECK_1) d[1]++;
697 if (s->options & SSL_OP_PKCS1_CHECK_2)
698 sess->master_key[clear]++;
699#endif
700 s2n(enc,p);
701 d+=enc;
702 karg=sess->key_arg_length;
703 s2n(karg,p); /* key arg size */
722 if (karg > sizeof sess->key_arg)
704 if (karg > (int)sizeof(sess->key_arg))
723 {
724 ssl2_return_error(s,SSL2_PE_UNDEFINED_ERROR);
725 SSLerr(SSL_F_CLIENT_MASTER_KEY, ERR_R_INTERNAL_ERROR);
726 return -1;
727 }
728 memcpy(d,sess->key_arg,(unsigned int)karg);
729 d+=karg;
730

--- 301 unchanged lines hidden (view full) ---

1032 }
1033 }
1034 }
1035 s->state = SSL_ST_OK;
1036 return(1);
1037 }
1038
1039/* loads in the certificate from the server */
705 {
706 ssl2_return_error(s,SSL2_PE_UNDEFINED_ERROR);
707 SSLerr(SSL_F_CLIENT_MASTER_KEY, ERR_R_INTERNAL_ERROR);
708 return -1;
709 }
710 memcpy(d,sess->key_arg,(unsigned int)karg);
711 d+=karg;
712

--- 301 unchanged lines hidden (view full) ---

1014 }
1015 }
1016 }
1017 s->state = SSL_ST_OK;
1018 return(1);
1019 }
1020
1021/* loads in the certificate from the server */
1040int ssl2_set_certificate(SSL *s, int type, int len, unsigned char *data)
1022int ssl2_set_certificate(SSL *s, int type, int len, const unsigned char *data)
1041 {
1042 STACK_OF(X509) *sk=NULL;
1043 EVP_PKEY *pkey=NULL;
1044 SESS_CERT *sc=NULL;
1045 int i;
1046 X509 *x509=NULL;
1047 int ret=0;
1048

--- 92 unchanged lines hidden ---
1023 {
1024 STACK_OF(X509) *sk=NULL;
1025 EVP_PKEY *pkey=NULL;
1026 SESS_CERT *sc=NULL;
1027 int i;
1028 X509 *x509=NULL;
1029 int ret=0;
1030

--- 92 unchanged lines hidden ---