Skip to content

gnutls-sign-algorithm-enum is missing a lot of values

Hello,

I am trying to manually verify a certificates signature.

When I try to get the algorithm with (x509-certificate-signature-algorithm cert) i get #f.

Using

openssl x509 -in cert.pem --text | grep 'Signature Algorithm'
    Signature Algorithm: ecdsa-with-SHA256

however it seems that the algorithm is ecdsa-with-SHA256 which i guess should map to GNUTLS_SIGN_ECDSA_SHA256 of gnutls_sign_algorithm_t.

Investigating more deeply I noticed many #f entries in the list of sign algorithms:

here is the output of (sign-algorithm-list)

It seems many elements are nowhere to be found.

,pp (sign-algorithm-list)
$3 = (#<gnutls-sign-algorithm-enum RSA-SHA256>
 #<gnutls-sign-algorithm-enum RSA-SHA384>
 #<gnutls-sign-algorithm-enum RSA-SHA512>
 #<gnutls-sign-algorithm-enum RSA-PSS-SHA256>
 #<gnutls-sign-algorithm-enum RSA-PSS-RSAE-SHA256>
 #<gnutls-sign-algorithm-enum RSA-PSS-SHA384>
 #<gnutls-sign-algorithm-enum RSA-PSS-RSAE-SHA384>
 #<gnutls-sign-algorithm-enum RSA-PSS-SHA512>
 #<gnutls-sign-algorithm-enum RSA-PSS-RSAE-SHA512>
 #<gnutls-sign-algorithm-enum EdDSA-Ed25519>
 #<gnutls-sign-algorithm-enum EdDSA-Ed448>
 #f
 #f
 #f
 #<gnutls-sign-algorithm-enum ECDSA-SECP256R1-SHA256>
 #<gnutls-sign-algorithm-enum ECDSA-SECP384R1-SHA384>
 #<gnutls-sign-algorithm-enum ECDSA-SECP521R1-SHA512>
 #f
 #f
 #f
 #f
 #f
 #f
 #f
 #f
 #f
 #f
 #f
 #f
 #f
 #<gnutls-sign-algorithm-enum RSA-SHA1>
 #<gnutls-sign-algorithm-enum RSA-SHA1>
 #f
 #<gnutls-sign-algorithm-enum RSA-RMD160>
 #<gnutls-sign-algorithm-enum DSA-SHA1>
 #<gnutls-sign-algorithm-enum DSA-SHA1>
 #f
 #f
 #<gnutls-sign-algorithm-enum RSA-MD5>
 #<gnutls-sign-algorithm-enum RSA-MD5>
 #<gnutls-sign-algorithm-enum RSA-MD2>
 #f
 #f
 #f
 #f
 #f
 #f
 #f)

The length almost matches the enum in gnutls.h only GNUTLS_SIGN_UNKNOWN is missing. Doing anything with sign-algorithm/unknown segfaults guile.

I havent checked the other enums in gnutls/gnutls.h but it could be possible that others may be incomplete as well.

Version: guile-gnutls 4.0.0 or 4.0.1 Edit: Updated with info for 4.0.1

Edited by Dariqq