rkerberos 0.1.0 → 0.1.1
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/CHANGES +5 -0
- data/{README → README.md} +24 -12
- data/Rakefile +1 -0
- data/ext/rkerberos/keytab.c +3 -6
- data/ext/rkerberos/rkerberos.c +40 -11
- data/lib/rkerberos.so +0 -0
- data/rkerberos.gemspec +5 -7
- data/test/test_krb5.rb +12 -0
- data/test/test_krb5_keytab.rb +3 -3
- metadata +92 -102
data/CHANGES
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
= 0.1.1 - 08-May-2013
|
2
|
+
* Add credential cache argument to get_init_creds_keytab
|
3
|
+
* Fixed invalid VALUE declarations affecting non-gcc compilers
|
4
|
+
* Add OS X install instructions
|
5
|
+
|
1
6
|
= 0.1.0 - 28-Apr-2011
|
2
7
|
* Initial release. This is effectively a re-release of my own custom branch
|
3
8
|
of the krb5-auth library, with some minor changes.
|
data/{README → README.md}
RENAMED
@@ -1,10 +1,24 @@
|
|
1
|
-
|
1
|
+
# Description
|
2
2
|
The rkerberos library provides a Ruby interface for Kerberos.
|
3
3
|
|
4
|
-
|
4
|
+
# Requirements
|
5
5
|
Kerberos 1.7.0 or later, including admin header and library files.
|
6
6
|
|
7
|
-
|
7
|
+
# OSX
|
8
|
+
krb5 must be installed from source before installing the rkerberos gem:
|
9
|
+
```
|
10
|
+
wget http://web.mit.edu/kerberos/dist/krb5/1.10/krb5-1.10.2-signed.tar
|
11
|
+
tar -xf krb5-1.10.2-signed.tar
|
12
|
+
tar -xf krb5-1.10.2-signed.tar.gz
|
13
|
+
cd krb5-1.10.2
|
14
|
+
./configure
|
15
|
+
make
|
16
|
+
make install
|
17
|
+
```
|
18
|
+
latest release is here: http://web.mit.edu/kerberos/dist/index.html
|
19
|
+
|
20
|
+
# Synopsis
|
21
|
+
```ruby
|
8
22
|
require 'rkerberos'
|
9
23
|
|
10
24
|
# Get the default realm name
|
@@ -27,25 +41,23 @@
|
|
27
41
|
p kadm5.get_principal('someuser')
|
28
42
|
kadm5.set_password('someuser', 'abc123')
|
29
43
|
end
|
44
|
+
```
|
30
45
|
|
31
|
-
|
46
|
+
# Notes
|
32
47
|
The rkerberos library is a repackaging of my custom branch of the krb5_auth
|
33
48
|
library. Eventually the gem djberg96-krb5_auth will be removed from the gem
|
34
49
|
index.
|
35
50
|
|
36
|
-
|
51
|
+
# MIT vs Heimdal
|
37
52
|
This code was written for the MIT Kerberos library. It has not been tested
|
38
53
|
with the Heimdal Kerberos library.
|
39
54
|
|
40
|
-
|
55
|
+
# TODO
|
41
56
|
Create a separate class for the replay cache.
|
42
57
|
Better credentials cache support.
|
43
58
|
Ability to add and delete keytab entries.
|
44
59
|
|
45
|
-
|
46
|
-
OS X users will probably need to install Kerberos manually and specify
|
47
|
-
the dir-config option because it ships with old Kerberos header files,
|
48
|
-
and none of the admin headers or libraries by default.
|
49
|
-
|
50
|
-
= Author
|
60
|
+
# Authors
|
51
61
|
Daniel Berger
|
62
|
+
Dominic Cleal (maintainer)
|
63
|
+
|
data/Rakefile
CHANGED
data/ext/rkerberos/keytab.c
CHANGED
@@ -35,7 +35,6 @@ static VALUE rkrb5_keytab_allocate(VALUE klass){
|
|
35
35
|
static VALUE rkrb5_keytab_each(VALUE self){
|
36
36
|
RUBY_KRB5_KEYTAB* ptr;
|
37
37
|
VALUE v_kt_entry;
|
38
|
-
VALUE v_args[0];
|
39
38
|
krb5_error_code kerror;
|
40
39
|
krb5_kt_cursor cursor;
|
41
40
|
krb5_keytab_entry entry;
|
@@ -55,7 +54,7 @@ static VALUE rkrb5_keytab_each(VALUE self){
|
|
55
54
|
while((kerror = krb5_kt_next_entry(ptr->ctx, ptr->keytab, &entry, &cursor)) == 0){
|
56
55
|
krb5_unparse_name(ptr->ctx, entry.principal, &principal);
|
57
56
|
|
58
|
-
v_kt_entry = rb_class_new_instance(0,
|
57
|
+
v_kt_entry = rb_class_new_instance(0, NULL, cKrb5KtEntry);
|
59
58
|
|
60
59
|
rb_iv_set(v_kt_entry, "@principal", rb_str_new2(principal));
|
61
60
|
rb_iv_set(v_kt_entry, "@timestamp", rb_time_new(entry.timestamp, 0));
|
@@ -247,7 +246,6 @@ static VALUE rkrb5_keytab_get_entry(int argc, VALUE* argv, VALUE self){
|
|
247
246
|
krb5_keytab_entry entry;
|
248
247
|
char* name;
|
249
248
|
VALUE v_principal, v_vno, v_enctype, v_entry;
|
250
|
-
VALUE v_args[0];
|
251
249
|
|
252
250
|
Data_Get_Struct(self, RUBY_KRB5_KEYTAB, ptr);
|
253
251
|
|
@@ -276,7 +274,7 @@ static VALUE rkrb5_keytab_get_entry(int argc, VALUE* argv, VALUE self){
|
|
276
274
|
if(kerror)
|
277
275
|
rb_raise(cKrb5Exception, "krb5_kt_get_entry: %s", error_message(kerror));
|
278
276
|
|
279
|
-
v_entry = rb_class_new_instance(0,
|
277
|
+
v_entry = rb_class_new_instance(0, NULL, cKrb5KtEntry);
|
280
278
|
|
281
279
|
rb_iv_set(v_entry, "@principal", rb_str_new2(name));
|
282
280
|
rb_iv_set(v_entry, "@timestamp", rb_time_new(entry.timestamp, 0));
|
@@ -365,7 +363,6 @@ static VALUE rkrb5_keytab_initialize(int argc, VALUE* argv, VALUE self){
|
|
365
363
|
static VALUE rkrb5_s_keytab_foreach(int argc, VALUE* argv, VALUE klass){
|
366
364
|
VALUE v_kt_entry;
|
367
365
|
VALUE v_keytab_name;
|
368
|
-
VALUE v_args[0];
|
369
366
|
krb5_error_code kerror;
|
370
367
|
krb5_kt_cursor cursor;
|
371
368
|
krb5_keytab keytab;
|
@@ -429,7 +426,7 @@ static VALUE rkrb5_s_keytab_foreach(int argc, VALUE* argv, VALUE klass){
|
|
429
426
|
while((kerror = krb5_kt_next_entry(context, keytab, &entry, &cursor)) == 0){
|
430
427
|
krb5_unparse_name(context, entry.principal, &principal);
|
431
428
|
|
432
|
-
v_kt_entry = rb_class_new_instance(0,
|
429
|
+
v_kt_entry = rb_class_new_instance(0, NULL, cKrb5KtEntry);
|
433
430
|
|
434
431
|
rb_iv_set(v_kt_entry, "@principal", rb_str_new2(principal));
|
435
432
|
rb_iv_set(v_kt_entry, "@timestamp", rb_time_new(entry.timestamp, 0));
|
data/ext/rkerberos/rkerberos.c
CHANGED
@@ -127,7 +127,7 @@ static VALUE rkrb5_set_default_realm(int argc, VALUE* argv, VALUE self){
|
|
127
127
|
}
|
128
128
|
|
129
129
|
/* call-seq:
|
130
|
-
* krb5.get_init_creds_keytab(principal = nil, keytab = nil, service = nil)
|
130
|
+
* krb5.get_init_creds_keytab(principal = nil, keytab = nil, service = nil, ccache = nil)
|
131
131
|
*
|
132
132
|
* Acquire credentials for +principal+ from +keytab+ using +service+. If
|
133
133
|
* no principal is specified, then a principal is derived from the service
|
@@ -135,16 +135,19 @@ static VALUE rkrb5_set_default_realm(int argc, VALUE* argv, VALUE self){
|
|
135
135
|
*
|
136
136
|
* If no keytab file is provided, the default keytab file is used. This is
|
137
137
|
* typically /etc/krb5.keytab.
|
138
|
+
*
|
139
|
+
* If +ccache+ is supplied and is a Kerberos::Krb5::CredentialsCache, the
|
140
|
+
* resulting credentials will be stored in the credential cache.
|
138
141
|
*/
|
139
142
|
static VALUE rkrb5_get_init_creds_keytab(int argc, VALUE* argv, VALUE self){
|
140
143
|
RUBY_KRB5* ptr;
|
141
|
-
VALUE v_user, v_keytab_name, v_service;
|
144
|
+
VALUE v_user, v_keytab_name, v_service, v_ccache;
|
142
145
|
char* user;
|
143
146
|
char* service;
|
144
147
|
char keytab_name[MAX_KEYTAB_NAME_LEN];
|
145
148
|
|
146
149
|
krb5_error_code kerror;
|
147
|
-
krb5_get_init_creds_opt opt;
|
150
|
+
krb5_get_init_creds_opt* opt;
|
148
151
|
krb5_creds cred;
|
149
152
|
|
150
153
|
Data_Get_Struct(self, RUBY_KRB5, ptr);
|
@@ -152,7 +155,11 @@ static VALUE rkrb5_get_init_creds_keytab(int argc, VALUE* argv, VALUE self){
|
|
152
155
|
if(!ptr->ctx)
|
153
156
|
rb_raise(cKrb5Exception, "no context has been established");
|
154
157
|
|
155
|
-
|
158
|
+
kerror = krb5_get_init_creds_opt_alloc(ptr->ctx, &opt);
|
159
|
+
if(kerror)
|
160
|
+
rb_raise(cKrb5Exception, "krb5_get_init_creds_opt_alloc: %s", error_message(kerror));
|
161
|
+
|
162
|
+
rb_scan_args(argc, argv, "04", &v_user, &v_keytab_name, &v_service, &v_ccache);
|
156
163
|
|
157
164
|
// We need the service information for later.
|
158
165
|
if(NIL_P(v_service)){
|
@@ -173,8 +180,10 @@ static VALUE rkrb5_get_init_creds_keytab(int argc, VALUE* argv, VALUE self){
|
|
173
180
|
&ptr->princ
|
174
181
|
);
|
175
182
|
|
176
|
-
if(kerror)
|
183
|
+
if(kerror) {
|
184
|
+
krb5_get_init_creds_opt_free(ptr->ctx, opt);
|
177
185
|
rb_raise(cKrb5Exception, "krb5_sname_to_principal: %s", error_message(kerror));
|
186
|
+
}
|
178
187
|
}
|
179
188
|
else{
|
180
189
|
Check_Type(v_user, T_STRING);
|
@@ -182,16 +191,20 @@ static VALUE rkrb5_get_init_creds_keytab(int argc, VALUE* argv, VALUE self){
|
|
182
191
|
|
183
192
|
kerror = krb5_parse_name(ptr->ctx, user, &ptr->princ);
|
184
193
|
|
185
|
-
if(kerror)
|
194
|
+
if(kerror) {
|
195
|
+
krb5_get_init_creds_opt_free(ptr->ctx, opt);
|
186
196
|
rb_raise(cKrb5Exception, "krb5_parse_name: %s", error_message(kerror));
|
197
|
+
}
|
187
198
|
}
|
188
199
|
|
189
200
|
// Use the default keytab if none is specified.
|
190
201
|
if(NIL_P(v_keytab_name)){
|
191
202
|
kerror = krb5_kt_default_name(ptr->ctx, keytab_name, MAX_KEYTAB_NAME_LEN);
|
192
203
|
|
193
|
-
if(kerror)
|
204
|
+
if(kerror) {
|
205
|
+
krb5_get_init_creds_opt_free(ptr->ctx, opt);
|
194
206
|
rb_raise(cKrb5Exception, "krb5_kt_default_name: %s", error_message(kerror));
|
207
|
+
}
|
195
208
|
}
|
196
209
|
else{
|
197
210
|
Check_Type(v_keytab_name, T_STRING);
|
@@ -204,10 +217,22 @@ static VALUE rkrb5_get_init_creds_keytab(int argc, VALUE* argv, VALUE self){
|
|
204
217
|
&ptr->keytab
|
205
218
|
);
|
206
219
|
|
207
|
-
if(kerror)
|
220
|
+
if(kerror) {
|
221
|
+
krb5_get_init_creds_opt_free(ptr->ctx, opt);
|
208
222
|
rb_raise(cKrb5Exception, "krb5_kt_resolve: %s", error_message(kerror));
|
223
|
+
}
|
224
|
+
|
225
|
+
// Set the credential cache from the supplied Kerberos::Krb5::CredentialsCache
|
226
|
+
if(!NIL_P(v_ccache)){
|
227
|
+
RUBY_KRB5_CCACHE* ccptr;
|
228
|
+
Data_Get_Struct(v_ccache, RUBY_KRB5_CCACHE, ccptr);
|
209
229
|
|
210
|
-
|
230
|
+
kerror = krb5_get_init_creds_opt_set_out_ccache(ptr->ctx, opt, ccptr->ccache);
|
231
|
+
if(kerror) {
|
232
|
+
krb5_get_init_creds_opt_free(ptr->ctx, opt);
|
233
|
+
rb_raise(cKrb5Exception, "krb5_get_init_creds_opt_set_out_ccache: %s", error_message(kerror));
|
234
|
+
}
|
235
|
+
}
|
211
236
|
|
212
237
|
kerror = krb5_get_init_creds_keytab(
|
213
238
|
ptr->ctx,
|
@@ -216,11 +241,15 @@ static VALUE rkrb5_get_init_creds_keytab(int argc, VALUE* argv, VALUE self){
|
|
216
241
|
ptr->keytab,
|
217
242
|
0,
|
218
243
|
service,
|
219
|
-
|
244
|
+
opt
|
220
245
|
);
|
221
246
|
|
222
|
-
if(kerror)
|
247
|
+
if(kerror) {
|
248
|
+
krb5_get_init_creds_opt_free(ptr->ctx, opt);
|
223
249
|
rb_raise(cKrb5Exception, "krb5_get_init_creds_keytab: %s", error_message(kerror));
|
250
|
+
}
|
251
|
+
|
252
|
+
krb5_get_init_creds_opt_free(ptr->ctx, opt);
|
224
253
|
|
225
254
|
return self;
|
226
255
|
}
|
data/lib/rkerberos.so
ADDED
Binary file
|
data/rkerberos.gemspec
CHANGED
@@ -2,19 +2,17 @@ require 'rubygems'
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |spec|
|
4
4
|
spec.name = 'rkerberos'
|
5
|
-
spec.version = '0.1.
|
6
|
-
spec.
|
5
|
+
spec.version = '0.1.1'
|
6
|
+
spec.authors = ['Daniel Berger', 'Dominic Cleal']
|
7
7
|
spec.license = 'Artistic 2.0'
|
8
|
-
spec.email = 'djberg96@gmail.com'
|
9
|
-
spec.homepage = 'http://github.com/
|
10
|
-
spec.platform = Gem::Platform::RUBY
|
8
|
+
spec.email = ['djberg96@gmail.com', 'dcleal@redhat.com']
|
9
|
+
spec.homepage = 'http://github.com/domcleal/rkerberos'
|
11
10
|
spec.summary = 'A Ruby interface for the the Kerberos library'
|
12
11
|
spec.test_files = Dir['test/test*']
|
13
12
|
spec.extensions = ['ext/rkerberos/extconf.rb']
|
14
13
|
spec.files = Dir['**/*'].reject{ |f| f.include?('git') || f.include?('tmp') }
|
15
14
|
|
16
|
-
spec.
|
17
|
-
spec.extra_rdoc_files = ['README', 'CHANGES', 'MANIFEST'] + Dir['ext/rkerberos/*.c']
|
15
|
+
spec.extra_rdoc_files = ['README.md', 'CHANGES', 'MANIFEST'] + Dir['ext/rkerberos/*.c']
|
18
16
|
|
19
17
|
spec.add_dependency('rake-compiler')
|
20
18
|
|
data/test/test_krb5.rb
CHANGED
@@ -129,6 +129,18 @@ class TC_Krb5 < Test::Unit::TestCase
|
|
129
129
|
assert_nothing_raised{ @krb5.get_init_creds_keytab(@user, @keytab, @service) }
|
130
130
|
end
|
131
131
|
|
132
|
+
test "get_init_creds_keytab accepts a credential cache" do
|
133
|
+
omit_unless(File.exists?(@keytab), "keytab file not found, skipping")
|
134
|
+
assert_nothing_raised{ @krb5.get_init_creds_keytab(@user, @keytab, @service, @ccache) }
|
135
|
+
end
|
136
|
+
|
137
|
+
test "get_init_creds_keytab stores credentials in the credential cache" do
|
138
|
+
omit_unless(File.exists?(@keytab), "keytab file not found, skipping")
|
139
|
+
ccache = Kerberos::Krb5::CredentialsCache.new
|
140
|
+
assert_nothing_raised{ @krb5.get_init_creds_keytab(@user, @keytab, @service, @ccache) }
|
141
|
+
assert_equal @user, ccache.primary_principal
|
142
|
+
end
|
143
|
+
|
132
144
|
test "get_init_creds_keytab requires string arguments" do
|
133
145
|
assert_raise(TypeError){ @krb5.get_init_creds_keytab(1) }
|
134
146
|
assert_raise(TypeError){ @krb5.get_init_creds_keytab(@user, 1) }
|
data/test/test_krb5_keytab.rb
CHANGED
@@ -21,6 +21,9 @@ class TC_Krb5_Keytab < Test::Unit::TestCase
|
|
21
21
|
def self.startup
|
22
22
|
file = Dir.tmpdir + "/test.keytab"
|
23
23
|
|
24
|
+
@@key_file = "FILE:" + file
|
25
|
+
@@home_dir = ENV['HOME'] || ENV['USER_PROFILE']
|
26
|
+
|
24
27
|
PTY.spawn('kadmin.local') do |reader, writer, pid|
|
25
28
|
reader.gets
|
26
29
|
reader.expect(/local:\s+/)
|
@@ -31,9 +34,6 @@ class TC_Krb5_Keytab < Test::Unit::TestCase
|
|
31
34
|
writer.puts("ktadd -k #{file} testuser2")
|
32
35
|
reader.expect(/local:\s+/)
|
33
36
|
end
|
34
|
-
|
35
|
-
@@key_file = "FILE:" + file
|
36
|
-
@@home_dir = ENV['HOME'] || ENV['USER_PROFILE']
|
37
37
|
end
|
38
38
|
|
39
39
|
def setup
|
metadata
CHANGED
@@ -1,155 +1,145 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: rkerberos
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.1
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 1
|
9
|
-
- 0
|
10
|
-
version: 0.1.0
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Daniel Berger
|
9
|
+
- Dominic Cleal
|
14
10
|
autorequire:
|
15
11
|
bindir: bin
|
16
12
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
dependencies:
|
21
|
-
- !ruby/object:Gem::Dependency
|
13
|
+
date: 2013-05-08 00:00:00.000000000 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
22
16
|
name: rake-compiler
|
23
|
-
|
24
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
25
18
|
none: false
|
26
|
-
requirements:
|
27
|
-
- -
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
|
30
|
-
segments:
|
31
|
-
- 0
|
32
|
-
version: "0"
|
19
|
+
requirements:
|
20
|
+
- - ! '>='
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '0'
|
33
23
|
type: :runtime
|
34
|
-
version_requirements: *id001
|
35
|
-
- !ruby/object:Gem::Dependency
|
36
|
-
name: test-unit
|
37
24
|
prerelease: false
|
38
|
-
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
27
|
+
requirements:
|
28
|
+
- - ! '>='
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
version: '0'
|
31
|
+
- !ruby/object:Gem::Dependency
|
32
|
+
name: test-unit
|
33
|
+
requirement: !ruby/object:Gem::Requirement
|
39
34
|
none: false
|
40
|
-
requirements:
|
41
|
-
- -
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
hash: 11
|
44
|
-
segments:
|
45
|
-
- 2
|
46
|
-
- 1
|
47
|
-
- 0
|
35
|
+
requirements:
|
36
|
+
- - ! '>='
|
37
|
+
- !ruby/object:Gem::Version
|
48
38
|
version: 2.1.0
|
49
39
|
type: :development
|
50
|
-
version_requirements: *id002
|
51
|
-
- !ruby/object:Gem::Dependency
|
52
|
-
name: dbi-dbrc
|
53
40
|
prerelease: false
|
54
|
-
|
41
|
+
version_requirements: !ruby/object:Gem::Requirement
|
42
|
+
none: false
|
43
|
+
requirements:
|
44
|
+
- - ! '>='
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: 2.1.0
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: dbi-dbrc
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
55
50
|
none: false
|
56
|
-
requirements:
|
57
|
-
- -
|
58
|
-
- !ruby/object:Gem::Version
|
59
|
-
hash: 31
|
60
|
-
segments:
|
61
|
-
- 1
|
62
|
-
- 1
|
63
|
-
- 6
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
64
54
|
version: 1.1.6
|
65
55
|
type: :development
|
66
|
-
|
67
|
-
|
68
|
-
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: !ruby/object:Gem::Requirement
|
58
|
+
none: false
|
59
|
+
requirements:
|
60
|
+
- - ! '>='
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: 1.1.6
|
63
|
+
description: ! " The rkerberos library is an interface for the Kerberos 5 network\n
|
64
|
+
\ authentication protocol. It wraps the Kerberos C API.\n"
|
65
|
+
email:
|
66
|
+
- djberg96@gmail.com
|
67
|
+
- dcleal@redhat.com
|
69
68
|
executables: []
|
70
|
-
|
71
|
-
extensions:
|
69
|
+
extensions:
|
72
70
|
- ext/rkerberos/extconf.rb
|
73
|
-
extra_rdoc_files:
|
74
|
-
- README
|
71
|
+
extra_rdoc_files:
|
72
|
+
- README.md
|
75
73
|
- CHANGES
|
76
74
|
- MANIFEST
|
75
|
+
- ext/rkerberos/context.c
|
76
|
+
- ext/rkerberos/keytab.c
|
77
77
|
- ext/rkerberos/principal.c
|
78
|
-
- ext/rkerberos/rkerberos.c
|
79
78
|
- ext/rkerberos/kadm5.c
|
80
79
|
- ext/rkerberos/keytab_entry.c
|
81
|
-
- ext/rkerberos/
|
82
|
-
- ext/rkerberos/
|
80
|
+
- ext/rkerberos/config.c
|
81
|
+
- ext/rkerberos/rkerberos.c
|
83
82
|
- ext/rkerberos/ccache.c
|
84
83
|
- ext/rkerberos/policy.c
|
85
|
-
|
86
|
-
|
87
|
-
-
|
88
|
-
-
|
89
|
-
-
|
90
|
-
-
|
84
|
+
files:
|
85
|
+
- MANIFEST
|
86
|
+
- README.md
|
87
|
+
- test/test_config.rb
|
88
|
+
- test/test_krb5_keytab.rb
|
89
|
+
- test/test_keytab_entry.rb
|
90
|
+
- test/test_context.rb
|
91
91
|
- test/test_principal.rb
|
92
92
|
- test/test_credentials_cache.rb
|
93
|
-
- test/test_config.rb
|
94
93
|
- test/test_krb5.rb
|
95
|
-
- test/test_context.rb
|
96
|
-
- test/test_krb5_keytab.rb
|
97
94
|
- test/test_kadm5.rb
|
98
|
-
- test/test_keytab_entry.rb
|
99
95
|
- test/test_policy.rb
|
100
|
-
-
|
96
|
+
- Rakefile
|
97
|
+
- lib/rkerberos.so
|
101
98
|
- ext/rkerberos/extconf.rb
|
99
|
+
- ext/rkerberos/rkerberos.h
|
100
|
+
- ext/rkerberos/context.c
|
101
|
+
- ext/rkerberos/keytab.c
|
102
102
|
- ext/rkerberos/principal.c
|
103
|
-
- ext/rkerberos/rkerberos.c
|
104
103
|
- ext/rkerberos/kadm5.c
|
105
104
|
- ext/rkerberos/keytab_entry.c
|
106
|
-
- ext/rkerberos/
|
107
|
-
- ext/rkerberos/
|
105
|
+
- ext/rkerberos/config.c
|
106
|
+
- ext/rkerberos/rkerberos.c
|
108
107
|
- ext/rkerberos/ccache.c
|
109
108
|
- ext/rkerberos/policy.c
|
110
|
-
-
|
111
|
-
-
|
112
|
-
|
113
|
-
|
114
|
-
licenses:
|
109
|
+
- rkerberos.gemspec
|
110
|
+
- CHANGES
|
111
|
+
homepage: http://github.com/domcleal/rkerberos
|
112
|
+
licenses:
|
115
113
|
- Artistic 2.0
|
116
114
|
post_install_message:
|
117
115
|
rdoc_options: []
|
118
|
-
|
119
|
-
require_paths:
|
116
|
+
require_paths:
|
120
117
|
- lib
|
121
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
118
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
122
119
|
none: false
|
123
|
-
requirements:
|
124
|
-
- -
|
125
|
-
- !ruby/object:Gem::Version
|
126
|
-
|
127
|
-
|
128
|
-
- 0
|
129
|
-
version: "0"
|
130
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
120
|
+
requirements:
|
121
|
+
- - ! '>='
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: '0'
|
124
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
131
125
|
none: false
|
132
|
-
requirements:
|
133
|
-
- -
|
134
|
-
- !ruby/object:Gem::Version
|
135
|
-
|
136
|
-
segments:
|
137
|
-
- 0
|
138
|
-
version: "0"
|
126
|
+
requirements:
|
127
|
+
- - ! '>='
|
128
|
+
- !ruby/object:Gem::Version
|
129
|
+
version: '0'
|
139
130
|
requirements: []
|
140
|
-
|
141
|
-
|
142
|
-
rubygems_version: 1.6.2
|
131
|
+
rubyforge_project:
|
132
|
+
rubygems_version: 1.8.25
|
143
133
|
signing_key:
|
144
134
|
specification_version: 3
|
145
135
|
summary: A Ruby interface for the the Kerberos library
|
146
|
-
test_files:
|
136
|
+
test_files:
|
137
|
+
- test/test_config.rb
|
138
|
+
- test/test_krb5_keytab.rb
|
139
|
+
- test/test_keytab_entry.rb
|
140
|
+
- test/test_context.rb
|
147
141
|
- test/test_principal.rb
|
148
142
|
- test/test_credentials_cache.rb
|
149
|
-
- test/test_config.rb
|
150
143
|
- test/test_krb5.rb
|
151
|
-
- test/test_context.rb
|
152
|
-
- test/test_krb5_keytab.rb
|
153
144
|
- test/test_kadm5.rb
|
154
|
-
- test/test_keytab_entry.rb
|
155
145
|
- test/test_policy.rb
|