Signed-off-by: Zoltan Fridrich <zfridric@redhat.com>
if (ret < 0)
return gnutls_assert_val(ret);
+ session->internals.hsk_flags |= HSK_COMP_CRT_REQ_SENT;
+
return bytes_len + 1;
}
#define HSK_HRR_SENT (1<<3)
#define HSK_HRR_RECEIVED (1<<4)
#define HSK_CRT_REQ_SENT (1<<5)
+#define HSK_COMP_CRT_REQ_SENT (1<<6) /* whether certificate compression has been requested */
#define HSK_KEY_UPDATE_ASKED (1<<7) /* flag is not used during handshake */
#define HSK_FALSE_START_USED (1<<8) /* TLS1.2 only */
#define HSK_HAVE_FFDHE (1<<9) /* whether the peer has advertized at least an FFDHE group */
if (ret == GNUTLS_E_UNEXPECTED_HANDSHAKE_PACKET) {
/* check if we received compressed certificate */
err = _gnutls_recv_handshake(session, GNUTLS_HANDSHAKE_COMPRESSED_CERTIFICATE_PKT, 0, &buf);
- if (err >= 0) {
+ if (err >= 0 && (session->internals.hsk_flags & HSK_COMP_CRT_REQ_SENT)) {
decompress_cert = 1;
ret = err;
}