diff options
Diffstat (limited to 'lib/algorithms/sign.c')
-rw-r--r-- | lib/algorithms/sign.c | 30 |
1 files changed, 14 insertions, 16 deletions
diff --git a/lib/algorithms/sign.c b/lib/algorithms/sign.c index 1c19cc86fb..b64221bcfb 100644 --- a/lib/algorithms/sign.c +++ b/lib/algorithms/sign.c @@ -28,17 +28,6 @@ /* signature algorithms; */ -struct gnutls_sign_entry { - const char *name; - const char *oid; - gnutls_sign_algorithm_t id; - gnutls_pk_algorithm_t pk; - gnutls_digest_algorithm_t mac; - /* See RFC 5246 HashAlgorithm and SignatureAlgorithm - for values to use in aid struct. */ - const sign_algorithm_st aid; -}; -typedef struct gnutls_sign_entry gnutls_sign_entry; #define TLS_SIGN_AID_UNKNOWN {255, 255} static const sign_algorithm_st unknown_tls_aid = TLS_SIGN_AID_UNKNOWN; @@ -46,7 +35,7 @@ static const sign_algorithm_st unknown_tls_aid = TLS_SIGN_AID_UNKNOWN; /* Signature algorithms may be listed twice with a different PK algorithm, * e.g., RSA-PSS-SHA256 can be generated by GNUTLS_PK_RSA or GNUTLS_PK_RSA_PSS. */ -static const gnutls_sign_entry sign_algorithms[] = { +static const gnutls_sign_entry_st sign_algorithms[] = { {"RSA-SHA1", SIG_RSA_SHA1_OID, GNUTLS_SIGN_RSA_SHA1, GNUTLS_PK_RSA, GNUTLS_DIG_SHA1, {2, 1}}, {"RSA-SHA1", ISO_SIG_RSA_SHA1_OID, GNUTLS_SIGN_RSA_SHA1, @@ -146,7 +135,7 @@ static const gnutls_sign_entry sign_algorithms[] = { #define GNUTLS_SIGN_LOOP(b) \ do { \ - const gnutls_sign_entry *p; \ + const gnutls_sign_entry_st *p; \ for(p = sign_algorithms; p->name != NULL; p++) { b ; } \ } while (0) @@ -185,7 +174,7 @@ int gnutls_sign_is_secure(gnutls_sign_algorithm_t algorithm) gnutls_digest_algorithm_t dig = GNUTLS_DIG_UNKNOWN; /* avoid prefix */ - GNUTLS_SIGN_ALG_LOOP(dig = p->mac); + GNUTLS_SIGN_ALG_LOOP(dig = p->hash); if (dig != GNUTLS_DIG_UNKNOWN) return _gnutls_digest_is_secure(hash_to_entry(dig)); @@ -289,7 +278,7 @@ gnutls_pk_to_sign(gnutls_pk_algorithm_t pk, gnutls_digest_algorithm_t hash) gnutls_sign_algorithm_t ret = 0; GNUTLS_SIGN_LOOP( - if (pk == p->pk && hash == p->mac) { + if (pk == p->pk && hash == p->hash) { ret = p->id; break; } @@ -336,7 +325,7 @@ gnutls_sign_get_hash_algorithm(gnutls_sign_algorithm_t sign) { gnutls_digest_algorithm_t ret = GNUTLS_DIG_UNKNOWN; - GNUTLS_SIGN_ALG_LOOP(ret = p->mac); + GNUTLS_SIGN_ALG_LOOP(ret = p->hash); return ret; } @@ -422,3 +411,12 @@ const sign_algorithm_st *_gnutls_sign_to_tls_aid(gnutls_sign_algorithm_t return ret; } + +const gnutls_sign_entry_st *_gnutls_sign_to_entry(gnutls_sign_algorithm_t sign) +{ + const gnutls_sign_entry_st *ret = NULL; + + GNUTLS_SIGN_ALG_LOOP(ret = p); + + return ret; +} |