ss->ssl3->clientPrivateKey = NULL;
ss->ssl3.clientPrivateKey = NULL;
ssl3_RestartHandshakeAfterCertReq(sslSocket *         ss,				CERTCertificate *    cert,				SECKEYPrivateKey *   key,				CERTCertificateList *certChain){    SECStatus        rv          = SECSuccess;    if (MSB(ss->version) == MSB(SSL_LIBRARY_VERSION_3_0)) {	/* XXX This code only works on the initial handshake on a connection,	** XXX It does not work on a subsequent handshake (redo).	*/	if (ss->handshake != 0) {	    ss->handshake               = ssl_GatherRecord1stHandshake;	    ss->ssl3->clientCertificate = cert;	    ss->ssl3->clientCertChain   = certChain;	    if (key == NULL) {		(void)SSL3_SendAlert(ss, alert_warning, no_certificate);		ss->ssl3->clientPrivateKey = NULL;	    } else {		ss->ssl3->clientPrivateKey = SECKEY_CopyPrivateKey(key);	    }	    ssl_GetRecvBufLock(ss);	    if (ss->ssl3->hs.msgState.buf != NULL) {		rv = ssl3_HandleRecord(ss, NULL, &ss->gs.buf);	    }	    ssl_ReleaseRecvBufLock(ss);	}    }    return rv;}