0
0
Fork 0
mirror of https://github.com/matrix-construct/construct synced 2024-11-26 00:32:35 +01:00

GNUTLS: Cleanup fingerprint generation

Removes intermediate buffer, properly check return values
This commit is contained in:
Aaron Jones 2016-08-19 19:17:38 +00:00
parent a888b33274
commit 292cefd2b5
No known key found for this signature in database
GPG key ID: EC6F86EE9CD840B5

View file

@ -608,7 +608,6 @@ static int
make_certfp(gnutls_x509_crt_t cert, uint8_t certfp[RB_SSL_CERTFP_LEN], int method)
{
gnutls_digest_algorithm_t algo;
uint8_t digest[RB_SSL_CERTFP_LEN * 2];
size_t digest_size;
bool spki = false;
int len;
@ -637,7 +636,7 @@ make_certfp(gnutls_x509_crt_t cert, uint8_t certfp[RB_SSL_CERTFP_LEN], int metho
if (!spki)
{
if (gnutls_x509_crt_get_fingerprint(cert, algo, digest, &digest_size) < 0)
if (gnutls_x509_crt_get_fingerprint(cert, algo, certfp, &digest_size) != 0)
len = 0;
}
else
@ -667,7 +666,7 @@ make_certfp(gnutls_x509_crt_t cert, uint8_t certfp[RB_SSL_CERTFP_LEN], int metho
if (der_pubkey)
{
if (gnutls_hash_fast(algo, der_pubkey, der_pubkey_len, digest) != 0)
if (gnutls_hash_fast(algo, der_pubkey, der_pubkey_len, certfp) != 0)
len = 0;
rb_free(der_pubkey);
@ -678,8 +677,6 @@ make_certfp(gnutls_x509_crt_t cert, uint8_t certfp[RB_SSL_CERTFP_LEN], int metho
}
}
if (len)
memcpy(certfp, digest, len);
return len;
}