From: Sam Hartman Date: Wed, 23 Dec 2009 20:59:03 +0000 (+0000) Subject: Add anonymous principal and name type X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3427bf4c07cec901cc2214d0a9160aeec7f0c38f;p=thirdparty%2Fkrb5.git Add anonymous principal and name type git-svn-id: svn://anonsvn.mit.edu/krb5/branches/anonymous@23486 dc483132-0cff-0310-8789-dd5450dbe970 --- diff --git a/src/include/krb5/krb5.hin b/src/include/krb5/krb5.hin index 9e5c3853f5..bb62453f5a 100644 --- a/src/include/krb5/krb5.hin +++ b/src/include/krb5/krb5.hin @@ -261,6 +261,7 @@ typedef krb5_principal_data * krb5_principal; #define KRB5_NT_SMTP_NAME 7 /* Windows 2000 UPN */ #define KRB5_NT_ENTERPRISE_PRINCIPAL 10 +#define KRB5_NT_WELLKNOWN 11 /* Windows 2000 UPN and SID */ #define KRB5_NT_MS_PRINCIPAL -128 /* NT 4 style name */ @@ -293,6 +294,13 @@ typedef const krb5_principal_data *krb5_const_principal; */ krb5_boolean KRB5_CALLCONV krb5_is_referral_realm(const krb5_data *); +/*Both these functions return constant storage that must not be freed*/ + +const krb5_data *KRB5_CALLCONV +krb5_anonymous_realm(void); +krb5_const_principal KRB5_CALLCONV +krb5_anonymous_principal(void); + /* * end "base-defs.h" */ diff --git a/src/lib/krb5/krb/bld_princ.c b/src/lib/krb5/krb/bld_princ.c index ac2c92a9e3..e4532ef6ef 100644 --- a/src/lib/krb5/krb/bld_princ.c +++ b/src/lib/krb5/krb/bld_princ.c @@ -187,3 +187,33 @@ krb5_build_principal(krb5_context context, return retval; } + +/*Anonymous and well known principals*/ +static const char anon_realm_str[] += "WELLKNOWN:ANONYMOUS"; +static const krb5_data anon_realm_data = { + KV5M_DATA, sizeof(anon_realm_str)-1, + (char *) anon_realm_str}; +static const char wellknown_str[] = "WELLKNOWN"; +static const char anon_str[] = "ANONYMOUS"; +static const krb5_data anon_princ_data[] = { + {KV5M_DATA, sizeof(wellknown_str)-1, (char *) wellknown_str}, + {KV5M_DATA, sizeof(anon_str)-1, (char *)anon_str} +}; + +const krb5_principal_data anon_princ = { + KV5M_PRINCIPAL, + {KV5M_DATA, sizeof(anon_realm_str)-1, (char *) anon_realm_str}, + (krb5_data *) anon_princ_data, 2, KRB5_NT_WELLKNOWN +}; + +const krb5_data * KRB5_CALLCONV +krb5_anonymous_realm() +{ + return &anon_realm_data; +} +krb5_const_principal KRB5_CALLCONV +krb5_anonymous_principal() +{ + return &anon_princ; +} diff --git a/src/lib/krb5/libkrb5.exports b/src/lib/krb5/libkrb5.exports index 15a887b2f8..19303a6d10 100644 --- a/src/lib/krb5/libkrb5.exports +++ b/src/lib/krb5/libkrb5.exports @@ -109,6 +109,8 @@ krb5_address_compare krb5_address_order krb5_address_search krb5_aname_to_localname +krb5_anonymous_principal +krb5_anonymous_realm krb5_appdefault_boolean krb5_appdefault_string krb5_auth_con_free