24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
# File 'ext/netsoul_kerberos/netsoul_kerberos.c', line 24
static VALUE k_build_token(VALUE self, VALUE login, VALUE password)
{
k_data_t *data;
unsigned char *token_base64;
unsigned char *token;
size_t elen;
data = calloc(1, sizeof (k_data_t));
data->login = (char*)login;
data->unix_pass = (char*)password;
data->itoken = GSS_C_NO_BUFFER;
if (check_tokens(data) != 1) {
free(data);
return Qfalse;
}
token = (unsigned char*)strdup(data->otoken.value);
token_base64 = base64_encode((const unsigned char*)data->otoken.value, data->otoken.length, &elen);
rb_iv_set(self, "@login", login);
rb_iv_set(self, "@password", password);
rb_iv_set(self, "@token", rb_str_new2((const char*)token));
rb_iv_set(self, "@token_base64", rb_str_new2((const char*)token_base64));
free(token);
free(token_base64);
free(data);
return Qtrue;
}
|