/*
* call-seq:
* set_password(new_password)
*
* Call krb5_set_password to set the password for this credential to new_password. This requires that the credentials have already been fetched via Krb5.get_init_creds_password or Krb5.get_init_creds_keytab. Returns true on success, raises Krb5Auth::Krb5::Exception on failure.
*/
static VALUE Krb5_change_password(VALUE self, VALUE _newpass)
{
Check_Type(_newpass,T_STRING);
char *newpass = STR2CSTR(_newpass);
struct ruby_krb5 *kerb;
krb5_error_code krbret;
int pw_result;
krb5_data pw_res_string, res_string;
Data_Get_Struct(self, struct ruby_krb5, kerb);
if (!kerb) {
NOSTRUCT_EXCEPT();
return Qfalse;
}
krbret = krb5_set_password(kerb->ctx, &kerb->creds, newpass, NULL,
&pw_result, &pw_res_string, &res_string );
if (krbret) {
Krb5_register_error(krbret);
return Qfalse;
}
return Qtrue;
}