/*
* call-seq:
* set_password(new_password)
*
* Call krb5_set_password() to set the password for this credential to
* new_password.
*
* This method requires that the credential for kadmin/changepw@REALM has
* already been fetched using Krb5#get_init_creds_password or
* Krb5#get_init_creds_keytab.
*
* Returns true on success, raises Krb5Auth::Krb5::Exception on failure.
*--
* TODO: This method does not work at the moment.
*/
static VALUE Krb5_set_password(VALUE self, VALUE _newpass)
{
char *newpass;
struct ruby_krb5 *kerb;
krb5_error_code krbret;
int pw_result;
krb5_data pw_res_string, res_string;
Check_Type(_newpass,T_STRING);
newpass = StringValueCStr(_newpass);
Data_Get_Struct(self, struct ruby_krb5, kerb);
if(!kerb){
NOSTRUCT_EXCEPT();
return Qfalse;
}
// TODO: get kadmin/changepw credentials here.
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;
}
if(pw_result){
Krb5_register_error(pw_result);
return Qfalse;
}
return Qtrue;
}