krb5: Add function to determine whether a principal name is a krbtgt principal
authorJoseph Sutton <josephsutton@catalyst.net.nz>
Thu, 21 Sep 2023 22:32:07 +0000 (10:32 +1200)
committerJoseph Sutton <josephsutton@catalyst.net.nz>
Thu, 9 Nov 2023 23:39:20 +0000 (12:39 +1300)
Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
lib/krb5/libkrb5-exports.def.in
lib/krb5/principal.c
lib/krb5/version-script.map

index 3845cd73601a425397612d230337fd09849f80fd..4870de90d1f1973440b5fd886ed617fc1b5b64df 100644 (file)
@@ -539,6 +539,7 @@ EXPORTS
        krb5_principal_set_comp_string
        krb5_principal_set_realm
        krb5_principal_set_type
+       krb5_principalname_is_krbtgt
        krb5_print_address
        krb5_program_setup
        krb5_prompter_posix
index 4a8e66deb4162925094b45f4d963e4ee9af98655..77ccf8ed8ce5c090a42bdcb8ecccd02b37d59b93 100644 (file)
@@ -1244,6 +1244,19 @@ krb5_principal_is_pku2u(krb5_context context, krb5_const_principal principal)
     return strcmp(principal->realm, KRB5_PKU2U_REALM_NAME) == 0;
 }
 
+/**
+ * Check if the cname part of the principal name is a krbtgt principal
+ *
+ * @ingroup krb5_principal
+ */
+
+KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL
+krb5_principalname_is_krbtgt(krb5_context context, const PrincipalName *p)
+{
+    return p->name_string.len == 2 &&
+       strcmp(p->name_string.val[0], KRB5_TGS_NAME) == 0;
+}
+
 /**
  * Check if the cname part of the principal is a krbtgt principal
  *
@@ -1253,8 +1266,7 @@ krb5_principal_is_pku2u(krb5_context context, krb5_const_principal principal)
 KRB5_LIB_FUNCTION krb5_boolean KRB5_LIB_CALL
 krb5_principal_is_krbtgt(krb5_context context, krb5_const_principal p)
 {
-    return p->name.name_string.len == 2 &&
-       strcmp(p->name.name_string.val[0], KRB5_TGS_NAME) == 0;
+    return krb5_principalname_is_krbtgt(context, &p->name);
 }
 
 /**
index a81b08fa14786dc7bfe917006a02d013d9fcd844..f2cfa3cd3f9bb7fb27f2e573d7787fc1953b4889 100644 (file)
@@ -532,6 +532,7 @@ HEIMDAL_KRB5_2.0 {
                krb5_principal_is_federated;
                krb5_principal_is_krbtgt;
                krb5_principal_is_root_krbtgt;
+               krb5_principalname_is_krbtgt;
                krb5_print_address;
                krb5_program_setup;
                krb5_prompter_posix;