gssapi 1.1.2 → 1.2.0

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 4900e3de24fcb1b4bd1e1f6e4beece74187ac663
4
+ data.tar.gz: 25cd31e5aacea658b701c8870a9d14ce6bb735bf
5
+ SHA512:
6
+ metadata.gz: d0bf8e7383f210b60f3b9e8207d8a6fd15caea5712dc247e2e3fc014de1f527349e8e97e1110a47f7512ff62622052db2cce1ff1320274a498b4aea3e4604c4d
7
+ data.tar.gz: 8ae992ceaab77f81815aa836181cc8b929c93b0b58b129d1a27a7f186739384127ee0fdc47105564ffa13c767a4ee20a8926f143bd5b98710c5a2a24a9666669
@@ -0,0 +1,14 @@
1
+ ## Version 1.1.1
2
+ * Allow GssApiError to be initialized with string.
3
+ * Add display_name wrapper for gss_display_name to GSSAPI::Simple
4
+ * gss_iov examples
5
+ * Ruby 1.8.x support
6
+ * Change loader for MIT and Heimdal to be a bit cleaner. Fix syntax in simple.rb
7
+ * Do a gss_acquire_cred for every connection to the server.
8
+ * updating path to gssapi32.dll
9
+
10
+ ## Version 1.1.2
11
+ * add gss_get_mic
12
+
13
+ ## Version 1.2.0
14
+ * Move IOV and AEAD to gssapi/extensions.rb so it can be loaded separately when needed
data/Gemfile ADDED
@@ -0,0 +1,2 @@
1
+ source "https://rubygems.org"
2
+ gemspec
@@ -0,0 +1,22 @@
1
+ # Ruby GSSAPI Library
2
+
3
+ This is a wrapper around the system GSSAPI library (MIT only at this time). It exposes the low-level GSSAPI methods like gss_init_sec_context and gss_wrap and also provides an easier to use wrapper on top of this for common usage scenarios.
4
+
5
+
6
+ I'm going to try and maintain most of the docs in the Github WIKI for this project so please check there for documentation and examples.
7
+
8
+ https://github.com/zenchild/gssapi/wiki
9
+
10
+
11
+ Also check out the examples directory for some stubbed out client/server examples.
12
+
13
+
14
+ ## Note on IOV and AEAD functions
15
+
16
+ If you require the IOV and AEAD functions you will have to `require "gssapi/extensions"` to gain access to them.
17
+
18
+
19
+ #### License
20
+
21
+ Copyright © 2010 Dan Wanek <dan.wanek@gmail.com>
22
+ Ruby gssapi is licensed under the MIT license (see COPYING)
data/Rakefile CHANGED
@@ -1,29 +1,11 @@
1
- desc "Build the gem"
2
- task :gem do
3
- system "gem build gssapi.gemspec"
4
- end
5
-
6
- desc "Clean the build environment"
7
- task :clean do
8
- system "rm gssapi*.gem"
9
- end
10
-
11
- desc "Increment the version by 1 minor release"
12
- task :versionup do
13
- ver = up_min_version
14
- puts "New version: #{ver}"
15
- end
16
-
17
-
18
- def up_min_version
19
- f = File.open('VERSION', 'r+')
20
- ver = f.readline.chomp
21
- v_arr = ver.split(/\./).map do |v|
22
- v.to_i
23
- end
24
- v_arr[2] += 1
25
- ver = v_arr.join('.')
26
- f.rewind
27
- f.write(ver)
28
- ver
1
+ require "bundler/gem_tasks"
2
+
3
+ desc "Open a Pry Console"
4
+ task :console do
5
+ require "pry"
6
+ require "pathname"
7
+ $: << (Pathname(__FILE__).dirname + "lib").to_s
8
+ require "gssapi"
9
+ ARGV.clear
10
+ Pry.start
29
11
  end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.1.2
1
+ 1.2.0
@@ -4,21 +4,22 @@ $:.unshift lib unless $:.include?(lib)
4
4
  require 'date'
5
5
 
6
6
  Gem::Specification.new do |gem|
7
- gem.name = "gssapi"
8
- gem.version = File.open('VERSION').readline.chomp
9
- gem.date = Date.today.to_s
7
+ gem.name = "gssapi"
8
+ gem.version = File.open('VERSION').readline.chomp
9
+ gem.date = Date.today.to_s
10
10
  gem.platform = Gem::Platform::RUBY
11
11
  gem.rubyforge_project = nil
12
12
 
13
13
  gem.author = "Dan Wanek"
14
14
  gem.email = "dan.wanek@gmail.com"
15
15
  gem.homepage = "http://github.com/zenchild/gssapi"
16
+ gem.license = "MIT"
16
17
 
17
18
  gem.summary = "A FFI wrapper around the system GSSAPI library."
18
19
  gem.description = <<-EOF
19
20
  A FFI wrapper around the system GSSAPI library. Please make sure and read the
20
21
  Yard docs or standard GSSAPI documentation if you have any questions.
21
-
22
+
22
23
  There is also a class called GSSAPI::Simple that wraps many of the common features
23
24
  used for GSSAPI.
24
25
  EOF
@@ -26,7 +27,7 @@ Gem::Specification.new do |gem|
26
27
  gem.files = `git ls-files`.split(/\n/)
27
28
  gem.require_path = "lib"
28
29
  gem.rdoc_options = %w(-x test/ -x examples/)
29
- gem.extra_rdoc_files = %w(README.textile COPYING)
30
+ gem.extra_rdoc_files = %w(README.md COPYING Changelog.md)
30
31
 
31
32
  gem.required_ruby_version = '>= 1.8.7'
32
33
  gem.add_runtime_dependency 'ffi', '>= 1.0.1'
@@ -0,0 +1,40 @@
1
+ =begin
2
+ Copyright © 2014 Dan Wanek <dan.wanek@gmail.com>
3
+
4
+ Licensed under the MIT License: http://www.opensource.org/licenses/mit-license.php
5
+ =end
6
+ module GSSAPI
7
+ module LibGSSAPI
8
+
9
+ # Some versions of GSSAPI might not have support for IOV yet.
10
+ begin
11
+ # OM_uint32 GSSAPI_LIB_FUNCTION gss_wrap_iov( OM_uint32 * minor_status, gss_ctx_id_t context_handle,
12
+ # int conf_req_flag, gss_qop_t qop_req, int * conf_state, gss_iov_buffer_desc * iov, int iov_count );
13
+ attach_function :gss_wrap_iov, [:pointer, :pointer, :int, :OM_uint32, :pointer, :pointer, :int], :OM_uint32
14
+
15
+ # OM_uint32 GSSAPI_LIB_FUNCTION gss_unwrap_iov ( OM_uint32 * minor_status, gss_ctx_id_t context_handle,
16
+ # int * conf_state, gss_qop_t * qop_state, gss_iov_buffer_desc * iov, int iov_count )
17
+ attach_function :gss_unwrap_iov, [:pointer, :pointer, :pointer, :pointer, :pointer, :int], :OM_uint32
18
+
19
+ # OM_uint32 GSSAPI_LIB_CALL gss_wrap_iov_length ( OM_uint32 * minor_status, gss_ctx_id_t context_handle,
20
+ # int conf_req_flag, gss_qop_t qop_req, int * conf_state, gss_iov_buffer_desc * iov, int iov_count)
21
+ attach_function :gss_wrap_iov_length, [:pointer, :pointer, :int, :OM_uint32, :pointer, :pointer, :int], :OM_uint32
22
+ rescue FFI::NotFoundError => ex
23
+ warn "WARNING: Could not load IOV methods. Check your GSSAPI C library for an update"
24
+ end
25
+
26
+ begin
27
+ # OM_uint32 gss_wrap_aead(OM_uint32 * minor_status, gss_ctx_id_t context_handle, int conf_req_flag,
28
+ # gss_qop_t qop_req, gss_buffer_t input_assoc_buffer,
29
+ # gss_buffer_t input_payload_buffer, int * conf_state, gss_buffer_t output_message_buffer);
30
+ attach_function :gss_wrap_aead, [:pointer, :pointer, :int, :OM_uint32, :pointer, :pointer, :pointer, :pointer], :OM_uint32
31
+
32
+ # OM_uint32 gss_unwrap_aead(OM_uint32 * minor_status, gss_ctx_id_t context_handle, gss_buffer_t input_message_buffer,
33
+ # gss_buffer_t input_assoc_buffer, gss_buffer_t output_payload_buffer, int * conf_state, gss_qop_t * qop_state);
34
+ attach_function :gss_unwrap_aead, [:pointer,:pointer,:pointer,:pointer,:pointer,:pointer,:pointer], :OM_uint32
35
+ rescue FFI::NotFoundError => ex
36
+ warn "WARNING: Could not load AEAD methods. Check your GSSAPI C library for an update"
37
+ end
38
+
39
+ end
40
+ end
@@ -158,7 +158,7 @@ module GSSAPI
158
158
 
159
159
  def self.release(ptr)
160
160
  if( ptr.address == 0 )
161
- puts "NULL POINTER: Not freeing" if $DEBUG
161
+ puts "Releasing #{self.name} NULL POINTER: Not freeing" if $DEBUG
162
162
  return
163
163
  else
164
164
  puts "Releasing #{self.name} at #{ptr.address.to_s(16)}" if $DEBUG
@@ -270,36 +270,6 @@ module GSSAPI
270
270
  # min_stat = FFI::MemoryPointer.new :OM_uint32
271
271
  # Remember to free the allocated output_message_buffer with gss_release_buffer
272
272
  attach_function :gss_wrap, [:pointer, :pointer, :int, :OM_uint32, :pointer, :pointer, :pointer], :OM_uint32
273
-
274
- # Some versions of GSSAPI might not have support for IOV yet.
275
- begin
276
- # OM_uint32 GSSAPI_LIB_FUNCTION gss_wrap_iov( OM_uint32 * minor_status, gss_ctx_id_t context_handle,
277
- # int conf_req_flag, gss_qop_t qop_req, int * conf_state, gss_iov_buffer_desc * iov, int iov_count );
278
- attach_function :gss_wrap_iov, [:pointer, :pointer, :int, :OM_uint32, :pointer, :pointer, :int], :OM_uint32
279
-
280
- # OM_uint32 GSSAPI_LIB_FUNCTION gss_unwrap_iov ( OM_uint32 * minor_status, gss_ctx_id_t context_handle,
281
- # int * conf_state, gss_qop_t * qop_state, gss_iov_buffer_desc * iov, int iov_count )
282
- attach_function :gss_unwrap_iov, [:pointer, :pointer, :pointer, :pointer, :pointer, :int], :OM_uint32
283
-
284
- # OM_uint32 GSSAPI_LIB_CALL gss_wrap_iov_length ( OM_uint32 * minor_status, gss_ctx_id_t context_handle,
285
- # int conf_req_flag, gss_qop_t qop_req, int * conf_state, gss_iov_buffer_desc * iov, int iov_count)
286
- attach_function :gss_wrap_iov_length, [:pointer, :pointer, :int, :OM_uint32, :pointer, :pointer, :int], :OM_uint32
287
- rescue FFI::NotFoundError => ex
288
- warn "WARNING: Could not load IOV methods. Check your GSSAPI C library for an update"
289
- end
290
-
291
- begin
292
- # OM_uint32 gss_wrap_aead(OM_uint32 * minor_status, gss_ctx_id_t context_handle, int conf_req_flag,
293
- # gss_qop_t qop_req, gss_buffer_t input_assoc_buffer,
294
- # gss_buffer_t input_payload_buffer, int * conf_state, gss_buffer_t output_message_buffer);
295
- attach_function :gss_wrap_aead, [:pointer, :pointer, :int, :OM_uint32, :pointer, :pointer, :pointer, :pointer], :OM_uint32
296
-
297
- # OM_uint32 gss_unwrap_aead(OM_uint32 * minor_status, gss_ctx_id_t context_handle, gss_buffer_t input_message_buffer,
298
- # gss_buffer_t input_assoc_buffer, gss_buffer_t output_payload_buffer, int * conf_state, gss_qop_t * qop_state);
299
- attach_function :gss_unwrap_aead, [:pointer,:pointer,:pointer,:pointer,:pointer,:pointer,:pointer], :OM_uint32
300
- rescue FFI::NotFoundError => ex
301
- warn "WARNING: Could not load AEAD methods. Check your GSSAPI C library for an update"
302
- end
303
273
 
304
274
  # OM_uint32 gss_unwrap(OM_uint32 * minor_status, const gss_ctx_id_t context_handle,
305
275
  # const gss_buffer_t input_message_buffer, gss_buffer_t output_message_buffer, int * conf_state, gss_qop_t * qop_state);
@@ -330,6 +300,9 @@ module GSSAPI
330
300
  # OM_uint32 gss_display_status(OM_uint32 *minor_status, OM_uint32 status_value, int status_type, gss_OID mech_type, OM_uint32 *message_context, gss_buffer_t status_string)
331
301
  attach_function :gss_display_status, [:pointer, :OM_uint32, :int, :pointer, :pointer, :pointer], :OM_uint32
332
302
 
303
+ # OM_uint32 gss_krb5_copy_ccache(OM_uint32 *minor_status, gss_cred_id_t cred_handle, krb5_ccache out_ccache)
304
+ attach_function :gss_krb5_copy_ccache, [:pointer, :pointer, :pointer], :OM_uint32
305
+
333
306
  # Variable definitions
334
307
  # --------------------
335
308
 
@@ -17,22 +17,24 @@ module GSSAPI
17
17
 
18
18
 
19
19
  def self.load_mit
20
- case RUBY_PLATFORM
20
+ host_os = RbConfig::CONFIG['host_os']
21
+ case host_os
21
22
  when /linux/
22
23
  gssapi_lib = 'libgssapi_krb5.so.2'
24
+ ffi_lib gssapi_lib, FFI::Library::LIBC
23
25
  when /darwin/
24
26
  gssapi_lib = '/usr/lib/libgssapi_krb5.dylib'
27
+ ffi_lib gssapi_lib, FFI::Library::LIBC
25
28
  when /mswin|mingw32|windows/
26
29
  # Pull the gssapi32 path from the environment if it exist, otherwise use the default in Program Files
27
30
  gssapi32_path = ENV['gssapi32'] ? ENV['gssapi32'] : 'C:\Program Files (x86)\MIT\Kerberos\bin\gssapi32.dll'
28
31
  ffi_lib gssapi32_path, FFI::Library::LIBC # Required the MIT Kerberos libraries to be installed
29
32
  ffi_convention :stdcall
30
33
  else
31
- raise LoadError, "This platform (#{RUBY_PLATFORM}) is not supported by ruby gssapi and the MIT libraries."
34
+ raise LoadError, "This host OS (#{host_os}) is not supported by ruby gssapi and the MIT libraries."
32
35
  end
33
- ffi_lib gssapi_lib, FFI::Library::LIBC
34
36
 
35
- # -------------------- MIT Specifics --------------------
37
+ # -------------------- MIT Specifics --------------------
36
38
  attach_variable :__GSS_C_NT_HOSTBASED_SERVICE, :GSS_C_NT_HOSTBASED_SERVICE, :pointer # type gss_OID
37
39
  attach_variable :__GSS_C_NT_EXPORT_NAME, :GSS_C_NT_EXPORT_NAME, :pointer # type gss_OID
38
40
  LibGSSAPI.const_set("GSS_C_NT_HOSTBASED_SERVICE", __GSS_C_NT_HOSTBASED_SERVICE)
@@ -40,25 +42,26 @@ module GSSAPI
40
42
  end
41
43
 
42
44
  def self.load_heimdal
43
- case RUBY_PLATFORM
45
+ host_os = RbConfig::CONFIG['host_os']
46
+ case host_os
44
47
  when /linux/
45
48
  gssapi_lib = 'libgssapi.so.3'
46
49
  when /darwin/
47
50
  # use Heimdal Kerberos since Mac MIT Kerberos is OLD. Do a "require 'gssapi/heimdal'" first
48
51
  gssapi_lib = '/usr/heimdal/lib/libgssapi.dylib'
49
52
  else
50
- raise LoadError, "This platform (#{RUBY_PLATFORM}) is not supported by ruby gssapi and the Heimdal libraries."
53
+ raise LoadError, "This host OS (#{host_os}) is not supported by ruby gssapi and the Heimdal libraries."
51
54
  end
52
55
  ffi_lib gssapi_lib, FFI::Library::LIBC
53
56
 
54
- # ------------------ Heimdal Specifics ------------------
57
+ # ------------------ Heimdal Specifics ------------------
55
58
  attach_variable :__gss_c_nt_hostbased_service_oid_desc, GssOID
56
59
  attach_variable :__gss_c_nt_export_name_oid_desc, GssOID
57
60
  LibGSSAPI.const_set("GSS_C_NT_HOSTBASED_SERVICE", FFI::Pointer.new(__gss_c_nt_hostbased_service_oid_desc.to_ptr))
58
61
  LibGSSAPI.const_set("GSS_C_NT_EXPORT_NAME", FFI::Pointer.new(__gss_c_nt_export_name_oid_desc.to_ptr))
59
62
  end
60
63
 
61
- # Heimdal supported the *_iov functions befor MIT did so in some OS distributions if
64
+ # Heimdal supported the *_iov functions before MIT did so in some OS distributions if
62
65
  # you need IOV support and MIT does not provide it try the Heimdal libs and then
63
66
  # before doing a "require 'gssapi'" do a "require 'gssapi/heimdal'" and that will attempt
64
67
  # to load the Heimdal libs
@@ -10,6 +10,7 @@ module GSSAPI
10
10
  class Simple
11
11
 
12
12
  attr_reader :context
13
+ attr_reader :delegated_credentials
13
14
 
14
15
  # Initialize a new GSSAPI::Simple object
15
16
  # @param [String] host_name the fully qualified host name
@@ -26,6 +27,7 @@ module GSSAPI
26
27
  @context = nil # the security context
27
28
  @scred = nil # the service credentials. really only used for the server-side via acquire_credentials
28
29
  set_keytab(keytab) unless keytab.nil?
30
+ @delegated_credentials = nil
29
31
  end
30
32
 
31
33
 
@@ -61,7 +63,7 @@ module GSSAPI
61
63
  # to the remote host. Otherwise it returns true and the GSS security context has been established.
62
64
  def init_context(in_token = nil, opts = {})
63
65
  min_stat = FFI::MemoryPointer.new :OM_uint32
64
- ctx = (@context.nil? ? LibGSSAPI::GssCtxIdT.gss_c_no_context.address_of : @context.address_of)
66
+ pctx = (@context.nil? ? LibGSSAPI::GssCtxIdT.gss_c_no_context.address_of : @context.address_of)
65
67
  mech = LibGSSAPI::GssOID.gss_c_no_oid
66
68
  if(opts[:flags])
67
69
  flags = opts[:flags]
@@ -78,7 +80,7 @@ module GSSAPI
78
80
 
79
81
  maj_stat = LibGSSAPI.gss_init_sec_context(min_stat,
80
82
  nil,
81
- ctx,
83
+ pctx,
82
84
  @int_svc_name,
83
85
  mech,
84
86
  flags,
@@ -91,8 +93,13 @@ module GSSAPI
91
93
  nil)
92
94
 
93
95
  raise GssApiError.new(maj_stat, min_stat), "gss_init_sec_context did not return GSS_S_COMPLETE" if maj_stat > 1
94
-
95
- @context = LibGSSAPI::GssCtxIdT.new(ctx.get_pointer(0))
96
+
97
+ # The returned context may be equal to the passed in @context. If so, we
98
+ # must not create another AutoPointer to the same gss_buffer_t. If we do
99
+ # we will double delete it.
100
+ ctx = pctx.get_pointer(0)
101
+ @context = LibGSSAPI::GssCtxIdT.new(ctx) if ctx != @context
102
+
96
103
  maj_stat == 1 ? out_tok.value : true
97
104
  end
98
105
 
@@ -105,7 +112,7 @@ module GSSAPI
105
112
  raise GssApiError, "No credentials yet acquired. Call #{self.class.name}#acquire_credentials first" if @scred.nil?
106
113
 
107
114
  min_stat = FFI::MemoryPointer.new :OM_uint32
108
- ctx = (@context.nil? ? LibGSSAPI::GssCtxIdT.gss_c_no_context.address_of : @context.address_of)
115
+ pctx = (@context.nil? ? LibGSSAPI::GssCtxIdT.gss_c_no_context.address_of : @context.address_of)
109
116
  no_chn_bind = LibGSSAPI::GSS_C_NO_CHANNEL_BINDINGS
110
117
  @client = FFI::MemoryPointer.new :pointer # Will hold the initiating client name after the call
111
118
  mech = FFI::MemoryPointer.new :pointer # Will hold the mech being used after the call
@@ -113,9 +120,10 @@ module GSSAPI
113
120
  in_tok.value = in_token
114
121
  out_tok = GSSAPI::LibGSSAPI::ManagedGssBufferDesc.new
115
122
  ret_flags = FFI::MemoryPointer.new :OM_uint32
123
+ delegated_cred_handle = FFI::MemoryPointer.new :pointer
116
124
 
117
125
  maj_stat = LibGSSAPI.gss_accept_sec_context(min_stat,
118
- ctx,
126
+ pctx,
119
127
  @scred,
120
128
  in_tok.pointer,
121
129
  no_chn_bind,
@@ -123,11 +131,21 @@ module GSSAPI
123
131
  mech,
124
132
  out_tok.pointer,
125
133
  ret_flags,
126
- nil, nil)
134
+ nil,
135
+ delegated_cred_handle)
127
136
 
128
137
  raise GssApiError.new(maj_stat, min_stat), "gss_accept_sec_context did not return GSS_S_COMPLETE" if maj_stat > 1
129
138
 
130
- @context = LibGSSAPI::GssCtxIdT.new(ctx.get_pointer(0))
139
+ if (ret_flags.read_uint32 & LibGSSAPI::GSS_C_DELEG_FLAG) != 0
140
+ @delegated_credentials = LibGSSAPI::GssCredIdT.new(delegated_cred_handle.get_pointer(0))
141
+ end
142
+
143
+ # The returned context may be equal to the passed in @context. If so, we
144
+ # must not create another AutoPointer to the same gss_buffer_t. If we do
145
+ # we will double delete it.
146
+ ctx = pctx.get_pointer(0)
147
+ @context = LibGSSAPI::GssCtxIdT.new(ctx) if ctx != @context
148
+
131
149
  out_tok.length > 0 ? out_tok.value : true
132
150
  end
133
151
 
metadata CHANGED
@@ -1,45 +1,47 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gssapi
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.2
5
- prerelease:
4
+ version: 1.2.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Dan Wanek
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-11-05 00:00:00.000000000 Z
11
+ date: 2014-09-20 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: ffi
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - '>='
20
18
  - !ruby/object:Gem::Version
21
19
  version: 1.0.1
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - '>='
28
25
  - !ruby/object:Gem::Version
29
26
  version: 1.0.1
30
- description: ! " A FFI wrapper around the system GSSAPI library. Please make sure
31
- and read the\n Yard docs or standard GSSAPI documentation if you have any questions.\n
32
- \ \n There is also a class called GSSAPI::Simple that wraps many of the common
33
- features\n used for GSSAPI.\n"
27
+ description: |2
28
+ A FFI wrapper around the system GSSAPI library. Please make sure and read the
29
+ Yard docs or standard GSSAPI documentation if you have any questions.
30
+
31
+ There is also a class called GSSAPI::Simple that wraps many of the common features
32
+ used for GSSAPI.
34
33
  email: dan.wanek@gmail.com
35
34
  executables: []
36
35
  extensions: []
37
36
  extra_rdoc_files:
38
- - README.textile
37
+ - README.md
39
38
  - COPYING
39
+ - Changelog.md
40
40
  files:
41
41
  - COPYING
42
- - README.textile
42
+ - Changelog.md
43
+ - Gemfile
44
+ - README.md
43
45
  - Rakefile
44
46
  - VERSION
45
47
  - examples/gss_client.rb
@@ -50,6 +52,7 @@ files:
50
52
  - gssapi.gemspec
51
53
  - lib/gssapi.rb
52
54
  - lib/gssapi/exceptions.rb
55
+ - lib/gssapi/extensions.rb
53
56
  - lib/gssapi/heimdal.rb
54
57
  - lib/gssapi/lib_gssapi.rb
55
58
  - lib/gssapi/lib_gssapi_loader.rb
@@ -58,7 +61,9 @@ files:
58
61
  - test/spec/gssapi_simple_spec.rb
59
62
  - test/spec/test_buffer_spec.rb
60
63
  homepage: http://github.com/zenchild/gssapi
61
- licenses: []
64
+ licenses:
65
+ - MIT
66
+ metadata: {}
62
67
  post_install_message:
63
68
  rdoc_options:
64
69
  - -x
@@ -68,21 +73,19 @@ rdoc_options:
68
73
  require_paths:
69
74
  - lib
70
75
  required_ruby_version: !ruby/object:Gem::Requirement
71
- none: false
72
76
  requirements:
73
- - - ! '>='
77
+ - - '>='
74
78
  - !ruby/object:Gem::Version
75
79
  version: 1.8.7
76
80
  required_rubygems_version: !ruby/object:Gem::Requirement
77
- none: false
78
81
  requirements:
79
- - - ! '>='
82
+ - - '>='
80
83
  - !ruby/object:Gem::Version
81
84
  version: '0'
82
85
  requirements: []
83
86
  rubyforge_project:
84
- rubygems_version: 1.8.24
87
+ rubygems_version: 2.2.2
85
88
  signing_key:
86
- specification_version: 3
89
+ specification_version: 4
87
90
  summary: A FFI wrapper around the system GSSAPI library.
88
91
  test_files: []
@@ -1,16 +0,0 @@
1
- h1. Ruby GSSAPI Library
2
-
3
- p. This is a wrapper around the system GSSAPI library (MIT only at this time). It exposes the low-level GSSAPI methods like gss_init_sec_context and gss_wrap and also provides an easier to use wrapper on top of this for common usage scenarios.
4
-
5
-
6
- p. I'm going to try and maintain most of the docs in the Github WIKI for this project so please check there for documentation and examples.
7
-
8
- https://github.com/zenchild/gssapi/wiki
9
-
10
- p. Also check out the examples directory for some stubbed out client/server examples.
11
-
12
-
13
- h4. License
14
-
15
- Copyright © 2010 Dan Wanek <dan.wanek@gmail.com>
16
- Ruby gssapi is licensed under the MIT license (see COPYING)