win32-security 0.3.1 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: eb48272d87182c9d2f834a8756446177ce280d24
4
- data.tar.gz: 272c29b8ba86646bd85e4fd00e5300ee52dcdba2
3
+ metadata.gz: 33ce1c2dc5905f666656e1e91ccccf4c68895071
4
+ data.tar.gz: 59d8f0ea5c8bed6db0ab4474ea6b8cf3bbdeaccf
5
5
  SHA512:
6
- metadata.gz: 2158ce7793c2e4261c6664235451905ed0f74720588d48dbe8c34316d4c4b8dbbfc45b65648f7b38975c94faff89c59b84ecbb8cb3c47b6d30485d8d18c97dcf
7
- data.tar.gz: ef88d6ee47441bced718e6c981acbeb663739d2b6427511418dcd1b0b8d359e2fa1862f5a58bb2fdabe08cc09b6d793e6efa3df3606c335a663a2ee0df093b57
6
+ metadata.gz: 9f1644cbd1d6bf1072e8d9bb3844b55d200cb21a13876ffcae54ef46acdfe6046ca1e1bc19de33ef2fa12830ea6ac49ad1ca50d0cf6f8310bd84b514da01d576
7
+ data.tar.gz: 1e2ee6736e1f24390985c03b176f49da020128dc60846bb7f4eed91ab87f7b7e0c97ccf29f1e704f8a7714c8c72cfd00eaff4ed4cdb20108537c97c731d1f8f5
Binary file
Binary file
data/CHANGES CHANGED
@@ -1,57 +1,63 @@
1
- == 0.3.1 - 8-Dec-2014
2
- * Work around a bug in 64-bit JRuby, which doesn't handle uintptr_t properly.
3
-
4
- == 0.3.0 - 31-Oct-2014
5
- * Implemented an ACL class that lets you create and inspect acccess
6
- control lists.
7
- * Implemented a basic ACE class that encapsulates an ACE object.
8
- * Removed Windows XP support.
9
- * Some minor updates to the Rakefile and gemspec.
10
-
11
- == 0.2.5 - 24-Feb-2014
12
- * Fixed a bug in the SID#string_to_sid method. Thanks go to Rob Reynolds
13
- for the spot.
14
-
15
- == 0.2.4 - 8-Nov-2013
16
- * Added rake as a development dependency.
17
- * Attempted to make FFI related constants and structs more private.
18
- * Updated the gem:create task for Rubygems 2.
19
-
20
- == 0.2.3 - 27-Jun-2013
21
- * Fixed a bug where a sid could be inappropriately stripped. Thanks
22
- go to Josh Cooper for the spot.
23
-
24
- == 0.2.2 - 8-Apr-2013
25
- * Fixed HANDLE prototypes in the underlying FFI code. This affected
26
- 64 bit versions of Ruby.
27
-
28
- == 0.2.1 - 19-Feb-2013
29
- * Removed a trailing comma that was causing problems.
30
-
31
- == 0.2.0 - 11-Jan-2013
32
- * Converted the code to FFI.
33
- * Refactored some of the tests.
34
-
35
- = 0.1.4 - 4-Oct-2012
36
- * Updated the SID.string_to_sid method so that it completes a string/sid
37
- round trip successfully now. Thanks go to Josh Cooper for the patch.
38
-
39
- = 0.1.3 - 12-Jul-2012
40
- * The SID.new method now defaults to the owner of the current thread if
41
- no account name is provided.
42
- * Updates to the gemspec, Rakefile, and SID tests, including updates to
43
- some of the gemspec dependencies.
44
-
45
- = 0.1.2 - 2-Aug-2009
46
- * Now compatible with Ruby 1.9.x.
47
- * Switched test-unit and sys-admin from standard dependencies to development
48
- dependencies.
49
-
50
- = 0.1.1 - 14-Jul-2009
51
- * Added some well known SID's as constants to the Win32::Security::SID class
52
- for convenience, e.g. SID::World, SID::Everyone.
53
- * Fixes for the gemspec.
54
- * Changed license to Artistic 2.0.
55
-
56
- = 0.1.0 - 17-Dec-2008
57
- * Initial release
1
+ == 0.3.2 - 4-Dec-2015
2
+ * This gem is now signed.
3
+ * Added a win32-security.rb file for convenience.
4
+ * The gem related tasks in the Rakefile now assume Rubygems 2.x.
5
+ * Fixed a function and struct prototype.
6
+
7
+ == 0.3.1 - 8-Dec-2014
8
+ * Work around a bug in 64-bit JRuby, which doesn't handle uintptr_t properly.
9
+
10
+ == 0.3.0 - 31-Oct-2014
11
+ * Implemented an ACL class that lets you create and inspect acccess
12
+ control lists.
13
+ * Implemented a basic ACE class that encapsulates an ACE object.
14
+ * Removed Windows XP support.
15
+ * Some minor updates to the Rakefile and gemspec.
16
+
17
+ == 0.2.5 - 24-Feb-2014
18
+ * Fixed a bug in the SID#string_to_sid method. Thanks go to Rob Reynolds
19
+ for the spot.
20
+
21
+ == 0.2.4 - 8-Nov-2013
22
+ * Added rake as a development dependency.
23
+ * Attempted to make FFI related constants and structs more private.
24
+ * Updated the gem:create task for Rubygems 2.
25
+
26
+ == 0.2.3 - 27-Jun-2013
27
+ * Fixed a bug where a sid could be inappropriately stripped. Thanks
28
+ go to Josh Cooper for the spot.
29
+
30
+ == 0.2.2 - 8-Apr-2013
31
+ * Fixed HANDLE prototypes in the underlying FFI code. This affected
32
+ 64 bit versions of Ruby.
33
+
34
+ == 0.2.1 - 19-Feb-2013
35
+ * Removed a trailing comma that was causing problems.
36
+
37
+ == 0.2.0 - 11-Jan-2013
38
+ * Converted the code to FFI.
39
+ * Refactored some of the tests.
40
+
41
+ = 0.1.4 - 4-Oct-2012
42
+ * Updated the SID.string_to_sid method so that it completes a string/sid
43
+ round trip successfully now. Thanks go to Josh Cooper for the patch.
44
+
45
+ = 0.1.3 - 12-Jul-2012
46
+ * The SID.new method now defaults to the owner of the current thread if
47
+ no account name is provided.
48
+ * Updates to the gemspec, Rakefile, and SID tests, including updates to
49
+ some of the gemspec dependencies.
50
+
51
+ = 0.1.2 - 2-Aug-2009
52
+ * Now compatible with Ruby 1.9.x.
53
+ * Switched test-unit and sys-admin from standard dependencies to development
54
+ dependencies.
55
+
56
+ = 0.1.1 - 14-Jul-2009
57
+ * Added some well known SID's as constants to the Win32::Security::SID class
58
+ for convenience, e.g. SID::World, SID::Everyone.
59
+ * Fixes for the gemspec.
60
+ * Changed license to Artistic 2.0.
61
+
62
+ = 0.1.0 - 17-Dec-2008
63
+ * Initial release
data/MANIFEST CHANGED
@@ -1,9 +1,11 @@
1
- * CHANGES
2
- * MANIFEST
3
- * README
4
- * Rakefile
5
- * win32-security.gemspec
6
- * lib/win32/security.rb
7
- * lib/win32/security/sid.rb
8
- * test/test_security.rb
9
- * test/test_sid.rb
1
+ * CHANGES
2
+ * MANIFEST
3
+ * README
4
+ * Rakefile
5
+ * win32-security.gemspec
6
+ * certs/djberg96_pub.pem
7
+ * lib/win32-security.rb
8
+ * lib/win32/security.rb
9
+ * lib/win32/security/sid.rb
10
+ * test/test_security.rb
11
+ * test/test_sid.rb
data/README CHANGED
@@ -1,53 +1,53 @@
1
- = Description
2
- A security library for MS Windows that allows you to open existing or
3
- create new security identifiers (SID's), as well as create access
4
- control lists (ACL's) and access control entries (ACE's).
5
-
6
- = Synopsis
7
- require 'win32/security'
8
- include Win32
9
-
10
- sid = Security::SID.open('some_user')
11
-
12
- sid.valid? # => true
13
- sid.to_s # => "S-1-5-21-3733855671-1102023144-2002619019-1000"
14
- sid.length # => 28
15
- sid.sid # => "\001\005\000\000\000\000\000\005\025\000\000\000..."
16
-
17
- acl = Security::ACL.new
18
- mask = Security::ACL::GENERIC_READ | Security::ACL::GENERIC_WRITE
19
-
20
- acl.add_access_allowed_ace('some_user', mask)
21
- acl.add_access_denied_ace('some_user', Security::ACL::GENERIC_EXECUTE)
22
-
23
- acl.acl_count # => 2
24
- acl.valid? # => true
25
-
26
- == Future Plans
27
- None at the moment. Suggestions welcome.
28
-
29
- == Known Issues
30
- There appears to be an issue with 64-bit versions of JRuby. I believe this
31
- is related to this issue: https://github.com/jruby/jruby/issues/1315. There
32
- is nothing I can do about it here.
33
-
34
- Please file any other bug reports on the project page at:
35
-
36
- https://github.com/djberg96/win32-security
37
-
38
- == Contributions
39
- Although this library is free, please consider having your company
40
- setup a gittip if used by your company professionally.
41
-
42
- http://www.gittip.com/djberg96/
43
-
44
- == License
45
- Artistic 2.0
46
-
47
- == Copyright
48
- (C) 2003-2014 Daniel J. Berger
49
- All Rights Reserved
50
-
51
- == Authors
52
- Daniel J. Berger
53
- Park Heesob
1
+ = Description
2
+ A security library for MS Windows that allows you to open existing or
3
+ create new security identifiers (SID's), as well as create access
4
+ control lists (ACL's) and access control entries (ACE's).
5
+
6
+ = Synopsis
7
+ require 'win32/security'
8
+ include Win32
9
+
10
+ sid = Security::SID.open('some_user')
11
+
12
+ sid.valid? # => true
13
+ sid.to_s # => "S-1-5-21-3733855671-1102023144-2002619019-1000"
14
+ sid.length # => 28
15
+ sid.sid # => "\001\005\000\000\000\000\000\005\025\000\000\000..."
16
+
17
+ acl = Security::ACL.new
18
+ mask = Security::ACL::GENERIC_READ | Security::ACL::GENERIC_WRITE
19
+
20
+ acl.add_access_allowed_ace('some_user', mask)
21
+ acl.add_access_denied_ace('some_user', Security::ACL::GENERIC_EXECUTE)
22
+
23
+ acl.acl_count # => 2
24
+ acl.valid? # => true
25
+
26
+ == Future Plans
27
+ None at the moment. Suggestions welcome.
28
+
29
+ == Known Issues
30
+ There appears to be an issue with 64-bit versions of JRuby. I believe this
31
+ is related to this issue: https://github.com/jruby/jruby/issues/1315. There
32
+ is nothing I can do about it here.
33
+
34
+ Please file any other bug reports on the project page at:
35
+
36
+ https://github.com/djberg96/win32-security
37
+
38
+ == Contributions
39
+ Although this library is free, please consider having your company
40
+ setup a gittip if used by your company professionally.
41
+
42
+ http://www.gittip.com/djberg96/
43
+
44
+ == License
45
+ Artistic 2.0
46
+
47
+ == Copyright
48
+ (C) 2003-2015 Daniel J. Berger
49
+ All Rights Reserved
50
+
51
+ == Authors
52
+ Daniel J. Berger
53
+ Park Heesob
data/Rakefile CHANGED
@@ -1,61 +1,58 @@
1
- require 'rake'
2
- require 'rake/clean'
3
- require 'rake/testtask'
4
- require 'rbconfig'
5
-
6
- CLEAN.include('**/*.gem', '**/*.rbc')
7
-
8
- namespace :gem do
9
- desc "Create the win32-security gem"
10
- task :create => [:clean] do
11
- spec = eval(IO.read('win32-security.gemspec'))
12
- if Gem::VERSION < "2.0"
13
- Gem::Builder.new(spec).build
14
- else
15
- require 'rubygems/package'
16
- Gem::Package.build(spec)
17
- end
18
- end
19
-
20
- desc "Install the win32-security gem"
21
- task :install => [:create] do
22
- ruby 'win32-security.gemspec'
23
- file = Dir["*.gem"].first
24
- sh "gem install -l #{file}"
25
- end
26
- end
27
-
28
- namespace :test do
29
- Rake::TestTask.new(:security) do |t|
30
- t.verbose = true
31
- t.warning = true
32
- t.test_files = Dir['test/test_security.rb']
33
- end
34
-
35
- Rake::TestTask.new(:acl) do |t|
36
- t.verbose = true
37
- t.warning = true
38
- t.test_files = Dir['test/test_acl.rb']
39
- end
40
-
41
- Rake::TestTask.new(:ace) do |t|
42
- t.verbose = true
43
- t.warning = true
44
- t.test_files = Dir['test/test_ace.rb']
45
- end
46
-
47
- Rake::TestTask.new(:sid) do |t|
48
- t.verbose = true
49
- t.warning = true
50
- t.test_files = Dir['test/test_sid.rb']
51
- end
52
-
53
- # ACL class isn't ready yet
54
- Rake::TestTask.new(:all) do |t|
55
- t.verbose = true
56
- t.warning = true
57
- t.test_files = Dir['test/test_sid.rb', 'test/test_security.rb']
58
- end
59
- end
60
-
61
- task :default => 'test:all'
1
+ require 'rake'
2
+ require 'rake/clean'
3
+ require 'rake/testtask'
4
+ require 'rbconfig'
5
+
6
+ CLEAN.include('**/*.gem', '**/*.rbc')
7
+
8
+ namespace :gem do
9
+ desc "Create the win32-security gem"
10
+ task :create => [:clean] do
11
+ require 'rubygems/package'
12
+ spec = eval(IO.read('win32-security.gemspec'))
13
+ spec.signing_key = File.join(Dir.home, '.ssh', 'gem-private_key.pem')
14
+ Gem::Package.build(spec, true)
15
+ end
16
+
17
+ desc "Install the win32-security gem"
18
+ task :install => [:create] do
19
+ ruby 'win32-security.gemspec'
20
+ file = Dir["*.gem"].first
21
+ sh "gem install -l #{file}"
22
+ end
23
+ end
24
+
25
+ namespace :test do
26
+ Rake::TestTask.new(:security) do |t|
27
+ t.verbose = true
28
+ t.warning = true
29
+ t.test_files = Dir['test/test_security.rb']
30
+ end
31
+
32
+ Rake::TestTask.new(:acl) do |t|
33
+ t.verbose = true
34
+ t.warning = true
35
+ t.test_files = Dir['test/test_acl.rb']
36
+ end
37
+
38
+ Rake::TestTask.new(:ace) do |t|
39
+ t.verbose = true
40
+ t.warning = true
41
+ t.test_files = Dir['test/test_ace.rb']
42
+ end
43
+
44
+ Rake::TestTask.new(:sid) do |t|
45
+ t.verbose = true
46
+ t.warning = true
47
+ t.test_files = Dir['test/test_sid.rb']
48
+ end
49
+
50
+ # ACL class isn't ready yet
51
+ Rake::TestTask.new(:all) do |t|
52
+ t.verbose = true
53
+ t.warning = true
54
+ t.test_files = Dir['test/test_sid.rb', 'test/test_security.rb']
55
+ end
56
+ end
57
+
58
+ task :default => 'test:all'
@@ -0,0 +1,21 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIDcDCCAligAwIBAgIBATANBgkqhkiG9w0BAQUFADA/MREwDwYDVQQDDAhkamJl
3
+ cmc5NjEVMBMGCgmSJomT8ixkARkWBWdtYWlsMRMwEQYKCZImiZPyLGQBGRYDY29t
4
+ MB4XDTE1MDkwMjIwNDkxOFoXDTE2MDkwMTIwNDkxOFowPzERMA8GA1UEAwwIZGpi
5
+ ZXJnOTYxFTATBgoJkiaJk/IsZAEZFgVnbWFpbDETMBEGCgmSJomT8ixkARkWA2Nv
6
+ bTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMyTkvXqRp6hLs9eoJOS
7
+ Hmi8kRYbq9Vkf15/hMxJpotYMgJVHHWrmDcC5Dye2PbnXjTkKf266Zw0PtT9h+lI
8
+ S3ts9HO+vaCFSMwFFZmnWJSpQ3CNw2RcHxjWkk9yF7imEM8Kz9ojhiDXzBetdV6M
9
+ gr0lV/alUr7TNVBDngbXEfTWscyXh1qd7xZ4EcOdsDktCe5G45N/o3662tPQvJsi
10
+ FOF0CM/KuBsa/HL1/eoEmF4B3EKIRfTHrQ3hu20Kv3RJ88QM4ec2+0dd97uX693O
11
+ zv6981fyEg+aXLkxrkViM/tz2qR2ZE0jPhHTREPYeMEgptRkTmWSKAuLVWrJEfgl
12
+ DtkCAwEAAaN3MHUwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFEwe
13
+ nn6bfJADmuIDiMSOzedOrL+xMB0GA1UdEQQWMBSBEmRqYmVyZzk2QGdtYWlsLmNv
14
+ bTAdBgNVHRIEFjAUgRJkamJlcmc5NkBnbWFpbC5jb20wDQYJKoZIhvcNAQEFBQAD
15
+ ggEBAHmNOCWoDVD75zHFueY0viwGDVP1BNGFC+yXcb7u2GlK+nEMCORqzURbYPf7
16
+ tL+/hzmePIRz7i30UM//64GI1NLv9jl7nIwjhPpXpf7/lu2I9hOTsvwSumb5UiKC
17
+ /sqBxI3sfj9pr79Wpv4MuikX1XPik7Ncb7NPsJPw06Lvyc3Hkg5X2XpPtLtS+Gr2
18
+ wKJnmzb5rIPS1cmsqv0M9LPWflzfwoZ/SpnmhagP+g05p8bRNKjZSA2iImM/GyYZ
19
+ EJYzxdPOrx2n6NYR3Hk+vHP0U7UBSveI6+qx+ndQYaeyCn+GRX2PKS9h66YF/Q1V
20
+ tGSHgAmcLlkdGgan182qsE/4kKM=
21
+ -----END CERTIFICATE-----
@@ -0,0 +1 @@
1
+ require_relative 'win32/security'
@@ -1,91 +1,91 @@
1
- # This file allows users to require all security related classes from
2
- # a single file, instead of having to require individual files.
3
-
4
- require_relative 'security/windows/constants'
5
- require_relative 'security/windows/structs'
6
- require_relative 'security/windows/functions'
7
-
8
- # The Win32 module serves as a namespace only.
9
- module Win32
10
-
11
- # The Security class encapsulates security aspects of MS Windows.
12
- class Security
13
-
14
- # Base error class for all Win32::Security errors.
15
- class Error < StandardError; end
16
-
17
- include Windows::Security::Functions
18
- include Windows::Security::Constants
19
- include Windows::Security::Structs
20
- extend Windows::Security::Functions
21
-
22
- # The version of the win32-security library
23
- VERSION = '0.3.1'
24
-
25
- # Used by OpenProcessToken
26
- TOKEN_QUERY = 8
27
-
28
- # Returns whether or not the owner of the current process is running
29
- # with elevated security privileges.
30
- #
31
- def self.elevated_security?
32
- result = false
33
-
34
- # Work around a 64-bit JRuby bug
35
- if RUBY_PLATFORM == 'java' && ENV_JAVA['sun.arch.data.model'] == '64'
36
- ptr_type = :ulong_long
37
- else
38
- ptr_type = :uintptr_t
39
- end
40
-
41
- FFI::MemoryPointer.new(ptr_type) do |token|
42
- unless OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, token)
43
- raise SystemCallError.new("OpenProcessToken", FFI.errno)
44
- end
45
-
46
- begin
47
- token = token.read_pointer.to_i
48
-
49
- # Since the TokenElevation struct only has 1 member, we use a pointer.
50
- te = FFI::MemoryPointer.new(:ulong)
51
- rl = FFI::MemoryPointer.new(:ulong)
52
-
53
- bool = GetTokenInformation(
54
- token,
55
- :TokenElevation,
56
- te,
57
- te.size,
58
- rl
59
- )
60
-
61
- raise SystemCallError.new("GetTokenInformation", FFI.errno) unless bool
62
-
63
- result = te.read_ulong != 0
64
- ensure
65
- CloseHandle(token)
66
- te.free
67
- rl.free
68
- end
69
- end
70
-
71
- result
72
- end
73
-
74
- private
75
-
76
- def self.windows_version
77
- ver = OSVERSIONINFO.new
78
- ver[:dwOSVersionInfoSize] = ver.size
79
-
80
- unless GetVersionExA(ver)
81
- raise SystemCallError.new("GetVersionEx", FFI.errno)
82
- end
83
-
84
- ver[:dwMajorVersion]
85
- end
86
- end
87
- end
88
-
89
- require 'win32/security/sid'
90
- require 'win32/security/acl'
91
- require 'win32/security/ace'
1
+ # This file allows users to require all security related classes from
2
+ # a single file, instead of having to require individual files.
3
+
4
+ require_relative 'security/windows/constants'
5
+ require_relative 'security/windows/structs'
6
+ require_relative 'security/windows/functions'
7
+
8
+ # The Win32 module serves as a namespace only.
9
+ module Win32
10
+
11
+ # The Security class encapsulates security aspects of MS Windows.
12
+ class Security
13
+
14
+ # Base error class for all Win32::Security errors.
15
+ class Error < StandardError; end
16
+
17
+ include Windows::Security::Functions
18
+ include Windows::Security::Constants
19
+ include Windows::Security::Structs
20
+ extend Windows::Security::Functions
21
+
22
+ # The version of the win32-security library
23
+ VERSION = '0.3.2'
24
+
25
+ # Used by OpenProcessToken
26
+ TOKEN_QUERY = 8
27
+
28
+ # Returns whether or not the owner of the current process is running
29
+ # with elevated security privileges.
30
+ #
31
+ def self.elevated_security?
32
+ result = false
33
+
34
+ # Work around a 64-bit JRuby bug
35
+ if RUBY_PLATFORM == 'java' && ENV_JAVA['sun.arch.data.model'] == '64'
36
+ ptr_type = :ulong_long
37
+ else
38
+ ptr_type = :uintptr_t
39
+ end
40
+
41
+ FFI::MemoryPointer.new(ptr_type) do |token|
42
+ unless OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, token)
43
+ raise SystemCallError.new("OpenProcessToken", FFI.errno)
44
+ end
45
+
46
+ begin
47
+ token = token.read_pointer.to_i
48
+
49
+ # Since the TokenElevation struct only has 1 member, we use a pointer.
50
+ te = FFI::MemoryPointer.new(:ulong)
51
+ rl = FFI::MemoryPointer.new(:ulong)
52
+
53
+ bool = GetTokenInformation(
54
+ token,
55
+ :TokenElevation,
56
+ te,
57
+ te.size,
58
+ rl
59
+ )
60
+
61
+ raise SystemCallError.new("GetTokenInformation", FFI.errno) unless bool
62
+
63
+ result = te.read_ulong != 0
64
+ ensure
65
+ CloseHandle(token)
66
+ te.free
67
+ rl.free
68
+ end
69
+ end
70
+
71
+ result
72
+ end
73
+
74
+ private
75
+
76
+ def self.windows_version
77
+ ver = OSVERSIONINFO.new
78
+ ver[:dwOSVersionInfoSize] = ver.size
79
+
80
+ unless GetVersionExA(ver)
81
+ raise SystemCallError.new("GetVersionEx", FFI.errno)
82
+ end
83
+
84
+ ver[:dwMajorVersion]
85
+ end
86
+ end
87
+ end
88
+
89
+ require 'win32/security/sid'
90
+ require 'win32/security/acl'
91
+ require 'win32/security/ace'