/*
 * 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;
}