Loading ssl/t1_enc.c +25 −5 Original line number Diff line number Diff line Loading @@ -738,15 +738,35 @@ int tls1_mac(SSL *ssl, unsigned char *md, int send) md_size=EVP_MD_size(hash); buf[0]=rec->type; if (ssl->version == DTLS1_VERSION && ssl->client_version == DTLS1_BAD_VER) { buf[1]=TLS1_VERSION_MAJOR; buf[2]=TLS1_VERSION_MINOR; } else { buf[1]=(unsigned char)(ssl->version>>8); buf[2]=(unsigned char)(ssl->version); } buf[3]=rec->length>>8; buf[4]=rec->length&0xff; /* I should fix this up TLS TLS TLS TLS TLS XXXXXXXX */ HMAC_CTX_init(&hmac); HMAC_Init_ex(&hmac,mac_sec,EVP_MD_size(hash),hash,NULL); if (ssl->version == DTLS1_VERSION && ssl->client_version != DTLS1_BAD_VER) { unsigned char dtlsseq[8],*p=dtlsseq; s2n(send?ssl->d1->w_epoch:ssl->d1->r_epoch, p); memcpy (p,&seq[2],6); HMAC_Update(&hmac,dtlsseq,8); } else HMAC_Update(&hmac,seq,8); HMAC_Update(&hmac,buf,5); HMAC_Update(&hmac,rec->input,rec->length); HMAC_Final(&hmac,md,&md_size); Loading Loading
ssl/t1_enc.c +25 −5 Original line number Diff line number Diff line Loading @@ -738,15 +738,35 @@ int tls1_mac(SSL *ssl, unsigned char *md, int send) md_size=EVP_MD_size(hash); buf[0]=rec->type; if (ssl->version == DTLS1_VERSION && ssl->client_version == DTLS1_BAD_VER) { buf[1]=TLS1_VERSION_MAJOR; buf[2]=TLS1_VERSION_MINOR; } else { buf[1]=(unsigned char)(ssl->version>>8); buf[2]=(unsigned char)(ssl->version); } buf[3]=rec->length>>8; buf[4]=rec->length&0xff; /* I should fix this up TLS TLS TLS TLS TLS XXXXXXXX */ HMAC_CTX_init(&hmac); HMAC_Init_ex(&hmac,mac_sec,EVP_MD_size(hash),hash,NULL); if (ssl->version == DTLS1_VERSION && ssl->client_version != DTLS1_BAD_VER) { unsigned char dtlsseq[8],*p=dtlsseq; s2n(send?ssl->d1->w_epoch:ssl->d1->r_epoch, p); memcpy (p,&seq[2],6); HMAC_Update(&hmac,dtlsseq,8); } else HMAC_Update(&hmac,seq,8); HMAC_Update(&hmac,buf,5); HMAC_Update(&hmac,rec->input,rec->length); HMAC_Final(&hmac,md,&md_size); Loading