openssl will read max 31 bytes of client auth challenge,
because the following line assumes total message length
is SSL2_MAX_CERT_CHALLENGE_LENGTH+1, where it's really
SSL2_MAX_CERT_CHALLENGE_LENGTH+2:
in static int client_certificate(SSL *s), s2_clnt.c:772
i=ssl2_read(s,(char *)&(buf[s->init_num]),
SSL2_MAX_CERT_CHALLENGE_LENGTH+1-s->init_num);
The result is that for 32 byte challenges, only 31 bytes
will be included in the hash, so the handshake will
fail.
The patch below fixes this problem.
Thanks
Zeev
--- openssl-orig/ssl/s2_clnt.c Fri Oct 4 15:53:53 2002
+++ openssl-SNAP-20021003/ssl/s2_clnt.c Fri Oct 4 15:54:11 2002
@@ -770,8 +770,8 @@
if (s->state == SSL2_ST_SEND_CLIENT_CERTIFICATE_A)
{
i=ssl2_read(s,(char *)&(buf[s->init_num]),
- SSL2_MAX_CERT_CHALLENGE_LENGTH+1-s->init_num);
- if (i<(SSL2_MIN_CERT_CHALLENGE_LENGTH+1-s->init_num))
+ SSL2_MAX_CERT_CHALLENGE_LENGTH+2-s->init_num);
+ if (i<(SSL2_MIN_CERT_CHALLENGE_LENGTH+2-s->init_num))
return(ssl2_part_read(s,SSL_F_CLIENT_CERTIFICATE,i));
s->init_num += i;
if (s->msg_callback)
__________________________________________________
Do you Yahoo!?
New DSL Internet Access from SBC & Yahoo!
http://sbc.yahoo.com
______________________________________________________________________
OpenSSL Project http://www.openssl.org
Development Mailing List [EMAIL PROTECTED]
Automated List Manager [EMAIL PROTECTED]