/*
* call-seq:
* get_default_principal -> string
*
* Call krb5_cc_get_principal() to get the principal from the default cachefile. Returns the default principal on success, raises Krb5Auth::Krb5::Exception on failure.
*/
static VALUE Krb5_get_default_principal(VALUE self)
{
struct ruby_krb5 *kerb;
char *princ_name;
VALUE result;
krb5_error_code krbret;
krb5_ccache cc;
Data_Get_Struct(self, struct ruby_krb5, kerb);
if (!kerb) {
NOSTRUCT_EXCEPT();
return Qfalse;
}
krbret = krb5_cc_default(kerb->ctx, &cc);
if (krbret) {
Krb5_register_error(krbret);
return Qfalse;
}
krbret = krb5_cc_get_principal(kerb->ctx, cc, &kerb->princ);
if (krbret) {
krb5_cc_close(kerb->ctx, cc);
Krb5_register_error(krbret);
return Qnil;
}
krb5_cc_close(kerb->ctx, cc);
krbret = krb5_unparse_name(kerb->ctx, kerb->princ, &princ_name);
if (krbret) {
Krb5_register_error(krbret);
return Qnil;
}
result = rb_str_new2(princ_name);
free(princ_name);
return result;
}