kerberos 0.2 → 0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README +3 -9
- data/ext/ruby_kerberos.c +25 -25
- metadata +2 -2
data/README
CHANGED
@@ -1,11 +1,5 @@
|
|
1
1
|
|
2
|
-
|
3
|
-
|
4
|
-
ruby extconf.rb --with-kerberos-dir=/kerberos/install/path (/usr/local,/usr,etc..)
|
5
|
-
make
|
6
|
-
make install
|
7
|
-
|
8
|
-
|
9
|
-
If the compile fails make sure you have the libraries and krb5.h on your system, and that krb5.h is the MIT version, NOT Heimdal.
|
10
|
-
|
2
|
+
The gem includes krb5.h from the MIT distribution, and admin.h which includes just what is needed from misc other include files
|
3
|
+
that will not get installed on your system.
|
11
4
|
|
5
|
+
Documentation is in the c source, so running rdoc on the ext directory will give you the documentation.
|
data/ext/ruby_kerberos.c
CHANGED
@@ -14,7 +14,7 @@ int krb5_error_number = 0;
|
|
14
14
|
void *kadm5_handle = NULL;
|
15
15
|
|
16
16
|
static VALUE Kadm5_errstr(VALUE self);
|
17
|
-
int
|
17
|
+
int Kadm5_register_error(int error);
|
18
18
|
static VALUE Kadm5_init_with_password(VALUE self,VALUE _auser,VALUE _apass);
|
19
19
|
static VALUE Kadm5_create_principal(VALUE self, VALUE _user, VALUE _pass, VALUE options);
|
20
20
|
static VALUE Kadm5_delete_principal(VALUE self, VALUE _auser);
|
@@ -24,7 +24,6 @@ int Krb5_register_error(int error);
|
|
24
24
|
static VALUE Krb5_change_password(VALUE self, VALUE _user, VALUE _pass, VALUE _newpass);
|
25
25
|
static VALUE Krb5_get_init_creds_password(VALUE self, VALUE _user, VALUE _pass);
|
26
26
|
|
27
|
-
|
28
27
|
int Krb5_register_error(int error) {
|
29
28
|
krb5_error_number = error;
|
30
29
|
return 0;
|
@@ -50,7 +49,7 @@ static VALUE Kadm5_errstr(VALUE self) {
|
|
50
49
|
/* returns the last error message generated or nil */
|
51
50
|
static VALUE Krb5_errstr(VALUE self) {
|
52
51
|
char error[255];
|
53
|
-
if (
|
52
|
+
if (krb5_error_number == 0) {
|
54
53
|
return Qnil;
|
55
54
|
}
|
56
55
|
strncpy(error,error_message(krb5_error_number), sizeof(error));
|
@@ -71,11 +70,11 @@ static VALUE Kadm5_init_with_password(VALUE self, VALUE _auser, VALUE _apass) {
|
|
71
70
|
Check_Type(_apass,T_STRING);
|
72
71
|
char * auser = STR2CSTR(_auser);
|
73
72
|
char * apass = STR2CSTR(_apass);
|
74
|
-
kadm5_ret_t
|
73
|
+
kadm5_ret_t ret;
|
75
74
|
|
76
|
-
|
77
|
-
if (
|
78
|
-
Kadm5_register_error(
|
75
|
+
ret = kadm5_init_with_password(auser, apass, KADM5_ADMIN_SERVICE, NULL, KADM5_STRUCT_VERSION, KADM5_API_VERSION_2, &kadm5_handle);
|
76
|
+
if (ret) {
|
77
|
+
Kadm5_register_error(ret);
|
79
78
|
return Qfalse;
|
80
79
|
}
|
81
80
|
return Qtrue;
|
@@ -241,6 +240,9 @@ static VALUE Krb5_change_password(VALUE self, VALUE _user, VALUE _pass, VALUE _n
|
|
241
240
|
int pw_result;
|
242
241
|
krb5_data pw_res_string, res_string;
|
243
242
|
|
243
|
+
memset(&princ, 0, sizeof(princ));
|
244
|
+
memset(&creds, 0, sizeof(creds));
|
245
|
+
|
244
246
|
if ((krbret = krb5_init_context(&ctx))) {
|
245
247
|
Krb5_register_error(krbret);
|
246
248
|
return Qfalse;
|
@@ -259,17 +261,27 @@ static VALUE Krb5_change_password(VALUE self, VALUE _user, VALUE _pass, VALUE _n
|
|
259
261
|
return Qfalse;
|
260
262
|
}
|
261
263
|
|
262
|
-
|
263
|
-
if (pw_result) {
|
264
|
+
/*
|
265
|
+
* if ((krbret = krb5_change_password(ctx, &creds, newpass, &pw_result, &pw_res_string, &res_string ))) {
|
266
|
+
* krb5_free_cred_contents(ctx, &creds);
|
267
|
+
* krb5_free_principal(ctx, princ);
|
268
|
+
* krb5_free_context(ctx);
|
269
|
+
* Krb5_register_error(krbret);
|
270
|
+
* return Qfalse;
|
271
|
+
* }
|
272
|
+
*/
|
273
|
+
|
274
|
+
if ((krbret = krb5_set_password(ctx, &creds, newpass, NULL, &pw_result, &pw_res_string, &res_string ))) {
|
264
275
|
krb5_free_cred_contents(ctx, &creds);
|
265
|
-
krb5_free_principal(ctx, princ);
|
276
|
+
krb5_free_principal(ctx, princ);
|
266
277
|
krb5_free_context(ctx);
|
267
|
-
Krb5_register_error(
|
278
|
+
Krb5_register_error(krbret);
|
268
279
|
return Qfalse;
|
269
280
|
}
|
270
281
|
|
282
|
+
|
271
283
|
krb5_free_cred_contents(ctx, &creds);
|
272
|
-
krb5_free_principal(ctx, princ);
|
284
|
+
krb5_free_principal(ctx, princ);
|
273
285
|
krb5_free_context(ctx);
|
274
286
|
return Qtrue;
|
275
287
|
|
@@ -304,8 +316,8 @@ static VALUE Krb5_get_init_creds_password(VALUE self, VALUE _user, VALUE _pass)
|
|
304
316
|
}
|
305
317
|
|
306
318
|
if ((krbret = krb5_get_init_creds_password( ctx, &creds, princ, pass, 0, NULL, 0, NULL, NULL))) {
|
307
|
-
krb5_free_context(ctx);
|
308
319
|
krb5_free_principal(ctx, princ);
|
320
|
+
krb5_free_context(ctx);
|
309
321
|
Krb5_register_error(krbret);
|
310
322
|
return Qfalse;
|
311
323
|
}
|
@@ -317,21 +329,10 @@ static VALUE Krb5_get_init_creds_password(VALUE self, VALUE _user, VALUE _pass)
|
|
317
329
|
return Qtrue;
|
318
330
|
}
|
319
331
|
|
320
|
-
VALUE Krb5_init(VALUE self)
|
321
|
-
{
|
322
|
-
return self;
|
323
|
-
}
|
324
|
-
|
325
|
-
VALUE Kadm5_init(VALUE self)
|
326
|
-
{
|
327
|
-
return self;
|
328
|
-
}
|
329
|
-
|
330
332
|
void Init_ruby_kerberos() {
|
331
333
|
mKerberos = rb_define_module("Kerberos");
|
332
334
|
|
333
335
|
cKadm5 = rb_define_class_under(mKerberos,"Kadm5", rb_cObject);
|
334
|
-
rb_define_method(cKadm5, "initialize", Kadm5_init,0);
|
335
336
|
rb_define_method(cKadm5, "errstr", Kadm5_errstr,0);
|
336
337
|
rb_define_method(cKadm5, "init_with_password", Kadm5_init_with_password,2);
|
337
338
|
rb_define_method(cKadm5, "create_principal", Kadm5_create_principal,3);
|
@@ -354,7 +355,6 @@ VALUE Kadm5_init(VALUE self)
|
|
354
355
|
rb_define_const(cKadm5,"KRB5_KDB_NEW_PRINC",INT2NUM(KRB5_KDB_NEW_PRINC));
|
355
356
|
|
356
357
|
cKrb5 = rb_define_class_under(mKerberos,"Krb5", rb_cObject);
|
357
|
-
rb_define_method(cKrb5, "initialize", Krb5_init,0);
|
358
358
|
rb_define_method(cKrb5, "errstr", Krb5_errstr,0);
|
359
359
|
rb_define_method(cKrb5, "get_init_creds_password", Krb5_get_init_creds_password,2);
|
360
360
|
rb_define_method(cKrb5, "change_password", Krb5_change_password,3);
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.8.11
|
|
3
3
|
specification_version: 1
|
4
4
|
name: kerberos
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: "0.
|
7
|
-
date: 2006-09-
|
6
|
+
version: "0.3"
|
7
|
+
date: 2006-09-23 00:00:00 -07:00
|
8
8
|
summary: Kerberos binding for ruby
|
9
9
|
require_paths:
|
10
10
|
- lib
|