[raop] Fix gcrypt error handling in raop_verification.c

And I learnt that gcrypt doesn't follow the negative-on-error pattern
This commit is contained in:
ejurgensen 2018-02-22 22:36:50 +01:00
parent c2a563eec7
commit 666af127d5

View File

@ -296,7 +296,14 @@ hash_init(enum hash_alg alg, HashCTX *c)
return -1;
};
#elif CONFIG_GCRYPT
return gcry_md_open(c, alg, 0);
gcry_error_t err;
err = gcry_md_open(c, alg, 0);
if (err)
return -1;
return 0;
#endif
}
@ -783,31 +790,38 @@ encrypt_gcm(unsigned char *ciphertext, int ciphertext_len, unsigned char *tag, u
return -1;
#elif CONFIG_GCRYPT
gcry_cipher_hd_t hd;
int ret;
gcry_error_t err;
ret = gcry_cipher_open(&hd, GCRY_CIPHER_AES128, GCRY_CIPHER_MODE_GCM, 0);
if (ret < 0)
err = gcry_cipher_open(&hd, GCRY_CIPHER_AES128, GCRY_CIPHER_MODE_GCM, 0);
if (err)
{
*errmsg = "Error initialising AES 128 GCM encryption";
return -1;
}
if ( (gcry_cipher_setkey(hd, key, gcry_cipher_get_algo_keylen(GCRY_CIPHER_AES128)) < 0) ||
(gcry_cipher_setiv(hd, iv, gcry_cipher_get_algo_blklen(GCRY_CIPHER_AES128)) < 0))
err = gcry_cipher_setkey(hd, key, gcry_cipher_get_algo_keylen(GCRY_CIPHER_AES128));
if (err)
{
*errmsg = "Could not set key or iv for AES 128 GCM";
*errmsg = "Could not set key for AES 128 GCM";
goto error;
}
ret = gcry_cipher_encrypt(hd, ciphertext, ciphertext_len, plaintext, plaintext_len);
if (ret < 0)
err = gcry_cipher_setiv(hd, iv, gcry_cipher_get_algo_blklen(GCRY_CIPHER_AES128));
if (err)
{
*errmsg = "Could not set iv for AES 128 GCM";
goto error;
}
err = gcry_cipher_encrypt(hd, ciphertext, ciphertext_len, plaintext, plaintext_len);
if (err)
{
*errmsg = "Error GCM encrypting";
goto error;
}
ret = gcry_cipher_gettag(hd, tag, AUTHTAG_LENGTH);
if (ret < 0)
err = gcry_cipher_gettag(hd, tag, AUTHTAG_LENGTH);
if (err)
{
*errmsg = "Error getting authtag";
goto error;
@ -860,24 +874,39 @@ encrypt_ctr(unsigned char *ciphertext, int ciphertext_len,
return -1;
#elif CONFIG_GCRYPT
gcry_cipher_hd_t hd;
gcry_error_t err;
if (gcry_cipher_open(&hd, GCRY_CIPHER_AES128, GCRY_CIPHER_MODE_CTR, 0) < 0)
err = gcry_cipher_open(&hd, GCRY_CIPHER_AES128, GCRY_CIPHER_MODE_CTR, 0);
if (err)
{
*errmsg = "Error initialising AES 128 CTR encryption";
return -1;
}
if ( (gcry_cipher_setkey(hd, key, gcry_cipher_get_algo_keylen(GCRY_CIPHER_AES128)) < 0) ||
(gcry_cipher_setctr(hd, iv, gcry_cipher_get_algo_blklen(GCRY_CIPHER_AES128)) < 0) )
err = gcry_cipher_setkey(hd, key, gcry_cipher_get_algo_keylen(GCRY_CIPHER_AES128));
if (err)
{
*errmsg = "Could not set key or iv for AES 128 CTR";
*errmsg = "Could not set key for AES 128 CTR";
goto error;
}
if ( (gcry_cipher_encrypt(hd, ciphertext, ciphertext_len, plaintext1, plaintext1_len) < 0) ||
(gcry_cipher_encrypt(hd, ciphertext, ciphertext_len, plaintext2, plaintext2_len) < 0) )
err = gcry_cipher_setctr(hd, iv, gcry_cipher_get_algo_blklen(GCRY_CIPHER_AES128));
if (err)
{
*errmsg = "Error CTR encrypting";
*errmsg = "Could not set iv for AES 128 CTR";
goto error;
}
err = gcry_cipher_encrypt(hd, ciphertext, ciphertext_len, plaintext1, plaintext1_len);
if (err)
{
*errmsg = "Error CTR encrypting plaintext 1";
goto error;
}
err = gcry_cipher_encrypt(hd, ciphertext, ciphertext_len, plaintext2, plaintext2_len);
if (err)
{
*errmsg = "Error CTR encrypting plaintext 2";
goto error;
}