The crypto API requires get_asymmetric_key() to return the size of
the RSA key in bytes on success. The return value is evaluated in
populate_user_list() where keys which are too short to encrypt a
challenge buffer are rejected right away.
However, for ASN.1 keys, the gcrypt implementation returned the number
of *bits* instead. This caused para_server to accept keys which are
in fact not suitable for authentication.
The fix is trivial.
key = para_malloc(sizeof(*key));
key->sexp = sexp;
*result = key;
- ret = n_size * 8;
+ ret = n_size;
PARA_INFO_LOG("successfully read %u bit asn public key\n", n_size * 8);
release_e: