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