gcry_cipher_algo_name before gcry_cipher_open makes gcry_cipher_open fail

Andreas Mattheiss andreas.mattheiss at gmx.de
Wed Sep 8 16:05:24 CEST 2021


Hello,

I've stumbled accross somethig I don't understand (libgcrypt 1.9.4): the following code

#include <gcrypt.h>
#include <stdio.h>

void main() {

gcry_cipher_hd_t handle;
int algo=GCRY_CIPHER_SERPENT128;
int mode=GCRY_CIPHER_MODE_CTR;


printf("Error from opening cipher: %i \n",gcry_cipher_open (&handle, algo, mode, 0));
printf("Selected cipher: %s \n",gcry_cipher_algo_name (algo));
}


produces the expected result:


Error from opening cipher: 0
Selected cipher: SERPENT128


However swap the two printf statements, i.e. call gcry_cipher_algo_name before gcry_cipher_open, and the output is


Selected cipher: ?
Error from opening cipher: 536870924


I'm struggling to grasp as to why opening a cipher should fail after doing a mere query.

The funny thing is that if I select int algo=GCRY_CIPHER_AES128 with query-before-open, everythig does work again:


Selected cipher: AES
Error from opening cipher: 0


Is gcry_cipher_openout failing for query-before-open for non-AES a bug or a feature?

Regards
Andreas





More information about the Gcrypt-devel mailing list