@@ -106,7 +106,7 @@ static unsigned char *
106
106
compute_hmac (const char * K , long C , int algo )
107
107
{
108
108
baseencode_error_t err ;
109
- size_t secret_len = (size_t ) ((strlen (K ) + 1.6 - 1 ) / 1.6 );
109
+ size_t secret_len = (size_t )((strlen (K ) + 1.6 - 1 ) / 1.6 );
110
110
111
111
char * normalized_K = normalize_secret (K );
112
112
if (normalized_K == NULL ) {
@@ -124,13 +124,24 @@ compute_hmac(const char *K, long C, int algo)
124
124
C_reverse_byte_order [i ] = ((unsigned char * ) & C )[j ];
125
125
126
126
gcry_md_hd_t hd ;
127
- gcry_md_open (& hd , algo , GCRY_MD_FLAG_HMAC );
128
- gcry_md_setkey (hd , secret , secret_len );
129
- gcry_md_write (hd , C_reverse_byte_order , sizeof (C_reverse_byte_order ));
127
+ gpg_error_t gpg_err = gcry_md_open (& hd , algo , GCRY_MD_FLAG_HMAC );
128
+ if (gpg_err ) {
129
+ printf ("%s\n" , "Error while opening the cipher handle." );
130
+ return NULL ;
131
+ }
132
+ gpg_err = gcry_md_setkey (hd , secret , secret_len );
133
+ if (gpg_err ) {
134
+ printf ("%s\n" , "Error while setting the cipher key." );
135
+ gcry_md_close (hd );
136
+ return NULL ;
137
+ }
138
+ gcry_md_write (hd , C_reverse_byte_order , sizeof (C_reverse_byte_order ));
130
139
gcry_md_final (hd );
131
- unsigned char * hmac = gcry_md_read (hd , algo );
140
+ unsigned char * hmac = gcry_md_read (hd , algo );
141
+
142
+ free (secret );
132
143
133
- free ( secret );
144
+ gcry_md_close ( hd );
134
145
135
146
return hmac ;
136
147
}
0 commit comments