krb5_error_code principal_from_credentials(TALLOC_CTX *parent_ctx, struct cli_credentials *credentials, struct smb_krb5_context *smb_krb5_context, krb5_principal *princ, enum credentials_obtained *obtained, const char **error_string) { krb5_error_code ret; const char *princ_string; TALLOC_CTX *mem_ctx = talloc_new(parent_ctx); *obtained = CRED_UNINITIALISED; if (!mem_ctx) { (*error_string) = error_message(ENOMEM); return ENOMEM; } princ_string = cli_credentials_get_principal_and_obtained(credentials, mem_ctx, obtained); if (!princ_string) { *princ = NULL; return 0; } ret = parse_principal(parent_ctx, princ_string, smb_krb5_context, princ, error_string); talloc_free(mem_ctx); return ret; }
/** * Obtain the client principal for this credentials context. * @param cred credentials context * @retval The username set on this context. * @note Return value will never be NULL except by programmer error. */ _PUBLIC_ const char *cli_credentials_get_principal(struct cli_credentials *cred, TALLOC_CTX *mem_ctx) { enum credentials_obtained obtained; return cli_credentials_get_principal_and_obtained(cred, mem_ctx, &obtained); }