gpg-interface: add function for converting trust level to string

Add new helper function `gpg_trust_level_to_str()` which will
convert a given member of `enum signature_trust_level` to its
corresponding string (in lowercase). For example, `TRUST_ULTIMATE`
will yield the string "ultimate".

This will abstract out some code in `pretty.c` relating to gpg
signature trust levels.

Mentored-by: Christian Couder <chriscool@tuxfamily.org>
Mentored-by: Hariom Verma <hariom18599@gmail.com>
Signed-off-by: Jaydeep Das <jaydeepjd.8914@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Jaydeep Das
2022-07-11 05:00:50 +00:00
committed by Junio C Hamano
parent e4a4b31577
commit 803978da49
3 changed files with 31 additions and 23 deletions

View File

@ -165,15 +165,17 @@ static struct {
{ 0, "TRUST_", GPG_STATUS_TRUST_LEVEL },
};
static struct {
/* Keep the order same as enum signature_trust_level */
static struct sigcheck_gpg_trust_level {
const char *key;
const char *display_key;
enum signature_trust_level value;
} sigcheck_gpg_trust_level[] = {
{ "UNDEFINED", TRUST_UNDEFINED },
{ "NEVER", TRUST_NEVER },
{ "MARGINAL", TRUST_MARGINAL },
{ "FULLY", TRUST_FULLY },
{ "ULTIMATE", TRUST_ULTIMATE },
{ "UNDEFINED", "undefined", TRUST_UNDEFINED },
{ "NEVER", "never", TRUST_NEVER },
{ "MARGINAL", "marginal", TRUST_MARGINAL },
{ "FULLY", "fully", TRUST_FULLY },
{ "ULTIMATE", "ultimate", TRUST_ULTIMATE },
};
static void replace_cstring(char **field, const char *line, const char *next)
@ -905,6 +907,20 @@ const char *get_signing_key(void)
return git_committer_info(IDENT_STRICT | IDENT_NO_DATE);
}
const char *gpg_trust_level_to_str(enum signature_trust_level level)
{
struct sigcheck_gpg_trust_level *trust;
if (level < 0 || level >= ARRAY_SIZE(sigcheck_gpg_trust_level))
BUG("invalid trust level requested %d", level);
trust = &sigcheck_gpg_trust_level[level];
if (trust->value != level)
BUG("sigcheck_gpg_trust_level[] unsorted");
return sigcheck_gpg_trust_level[level].display_key;
}
int sign_buffer(struct strbuf *buffer, struct strbuf *signature, const char *signing_key)
{
return use_format->sign_buffer(buffer, signature, signing_key);