win32-security 0.3.1 → 0.3.2
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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/CHANGES +63 -57
- data/MANIFEST +11 -9
- data/README +53 -53
- data/Rakefile +58 -61
- data/certs/djberg96_pub.pem +21 -0
- data/lib/win32-security.rb +1 -0
- data/lib/win32/security.rb +91 -91
- data/lib/win32/security/ace.rb +75 -75
- data/lib/win32/security/acl.rb +224 -224
- data/lib/win32/security/sid.rb +394 -394
- data/lib/win32/security/windows/constants.rb +184 -184
- data/lib/win32/security/windows/functions.rb +116 -116
- data/lib/win32/security/windows/structs.rb +94 -94
- data/test/test_ace.rb +48 -48
- data/test/test_acl.rb +101 -101
- data/test/test_security.rb +23 -23
- data/test/test_sid.rb +142 -142
- data/win32-security.gemspec +28 -27
- metadata +48 -18
- metadata.gz.sig +0 -0
data/test/test_security.rb
CHANGED
@@ -1,23 +1,23 @@
|
|
1
|
-
########################################################################
|
2
|
-
# test_security.rb
|
3
|
-
#
|
4
|
-
# Test suite for the Win32::Security base class. You should run these
|
5
|
-
# tests via the rake test tasks.
|
6
|
-
########################################################################
|
7
|
-
require 'test-unit'
|
8
|
-
require 'win32/security'
|
9
|
-
|
10
|
-
class TC_Win32_Security < Test::Unit::TestCase
|
11
|
-
test "version constant is set to expected value" do
|
12
|
-
assert_equal('0.3.
|
13
|
-
end
|
14
|
-
|
15
|
-
test "elevated security basic functionality" do
|
16
|
-
assert_respond_to(Win32::Security, :elevated_security?)
|
17
|
-
assert_boolean(Win32::Security.elevated_security?)
|
18
|
-
end
|
19
|
-
|
20
|
-
test "ffi functions are private" do
|
21
|
-
assert_not_respond_to(Win32::Security, :CloseHandle)
|
22
|
-
end
|
23
|
-
end
|
1
|
+
########################################################################
|
2
|
+
# test_security.rb
|
3
|
+
#
|
4
|
+
# Test suite for the Win32::Security base class. You should run these
|
5
|
+
# tests via the rake test tasks.
|
6
|
+
########################################################################
|
7
|
+
require 'test-unit'
|
8
|
+
require 'win32/security'
|
9
|
+
|
10
|
+
class TC_Win32_Security < Test::Unit::TestCase
|
11
|
+
test "version constant is set to expected value" do
|
12
|
+
assert_equal('0.3.2', Win32::Security::VERSION)
|
13
|
+
end
|
14
|
+
|
15
|
+
test "elevated security basic functionality" do
|
16
|
+
assert_respond_to(Win32::Security, :elevated_security?)
|
17
|
+
assert_boolean(Win32::Security.elevated_security?)
|
18
|
+
end
|
19
|
+
|
20
|
+
test "ffi functions are private" do
|
21
|
+
assert_not_respond_to(Win32::Security, :CloseHandle)
|
22
|
+
end
|
23
|
+
end
|
data/test/test_sid.rb
CHANGED
@@ -1,142 +1,142 @@
|
|
1
|
-
########################################################################
|
2
|
-
# test_sid.rb
|
3
|
-
#
|
4
|
-
# Test suite for the Win32::Security::SID class. You should run these
|
5
|
-
# tests via the 'rake test' task.
|
6
|
-
########################################################################
|
7
|
-
require 'etc'
|
8
|
-
require 'test-unit'
|
9
|
-
require 'win32/security'
|
10
|
-
include Win32
|
11
|
-
|
12
|
-
class TC_Win32_Security_Sid < Test::Unit::TestCase
|
13
|
-
def self.startup
|
14
|
-
@@host = Socket.gethostname
|
15
|
-
@@name = Etc.getlogin
|
16
|
-
end
|
17
|
-
|
18
|
-
def setup
|
19
|
-
@sid = Security::SID.new(@@name)
|
20
|
-
end
|
21
|
-
|
22
|
-
test "version is set to expected value" do
|
23
|
-
assert_equal('0.2.
|
24
|
-
end
|
25
|
-
|
26
|
-
test "sid method basic functionality" do
|
27
|
-
assert_respond_to(@sid, :sid)
|
28
|
-
assert_kind_of(String, @sid.sid)
|
29
|
-
end
|
30
|
-
|
31
|
-
test "account method basic functionality" do
|
32
|
-
assert_respond_to(@sid, :account)
|
33
|
-
assert_kind_of(String, @sid.account)
|
34
|
-
end
|
35
|
-
|
36
|
-
test "account_type method basic functionality" do
|
37
|
-
assert_respond_to(@sid, :account_type)
|
38
|
-
assert_kind_of(String, @sid.account_type)
|
39
|
-
end
|
40
|
-
|
41
|
-
test "domain method basic functionality" do
|
42
|
-
assert_respond_to(@sid, :domain)
|
43
|
-
assert_kind_of(String, @sid.domain)
|
44
|
-
end
|
45
|
-
|
46
|
-
test "host method basic functionality" do
|
47
|
-
assert_respond_to(@sid, :host)
|
48
|
-
assert_kind_of(String, @sid.host)
|
49
|
-
end
|
50
|
-
|
51
|
-
test "sid_to_string works as expected" do
|
52
|
-
assert_respond_to(Security::SID, :sid_to_string)
|
53
|
-
assert_kind_of(String, Security::SID.sid_to_string(@sid.sid))
|
54
|
-
assert_not_nil(Security::SID.sid_to_string(@sid.sid) =~ /\w+\-\w+/)
|
55
|
-
end
|
56
|
-
|
57
|
-
test "string_to_sid works as expected" do
|
58
|
-
assert_respond_to(Security::SID, :string_to_sid)
|
59
|
-
assert_kind_of(String, Security::SID.string_to_sid(@sid.to_s))
|
60
|
-
end
|
61
|
-
|
62
|
-
test "we can convert back and forth between a sid and a string" do
|
63
|
-
str = Security::SID.sid_to_string(@sid.sid)
|
64
|
-
assert_equal(@sid.sid, Security::SID.string_to_sid(str))
|
65
|
-
end
|
66
|
-
|
67
|
-
test "to_s works as expected" do
|
68
|
-
assert_respond_to(@sid, :to_s)
|
69
|
-
assert_kind_of(String, @sid.to_s)
|
70
|
-
assert_true(@sid.to_s.include?('-'))
|
71
|
-
end
|
72
|
-
|
73
|
-
test "to_str is an alias for to_s" do
|
74
|
-
assert_respond_to(@sid, :to_str)
|
75
|
-
assert_alias_method(@sid, :to_str, :to_s)
|
76
|
-
end
|
77
|
-
|
78
|
-
test "equality works as expected" do
|
79
|
-
assert_respond_to(@sid, :==)
|
80
|
-
assert_true(@sid == @sid)
|
81
|
-
end
|
82
|
-
|
83
|
-
test "valid? method works as expected" do
|
84
|
-
assert_respond_to(@sid, :valid?)
|
85
|
-
assert_true(@sid.valid?)
|
86
|
-
end
|
87
|
-
|
88
|
-
test "length method works as expected" do
|
89
|
-
assert_respond_to(@sid, :length)
|
90
|
-
assert_true(@sid.length > 0)
|
91
|
-
end
|
92
|
-
|
93
|
-
test "create method works as expected" do
|
94
|
-
assert_respond_to(Security::SID, :create)
|
95
|
-
assert_nothing_raised{
|
96
|
-
Security::SID.create(
|
97
|
-
Security::SID::SECURITY_WORLD_SID_AUTHORITY,
|
98
|
-
Security::SID::SECURITY_WORLD_RID
|
99
|
-
)
|
100
|
-
}
|
101
|
-
end
|
102
|
-
|
103
|
-
test "constructor defaults to current account" do
|
104
|
-
assert_nothing_raised{ @sid = Security::SID.new }
|
105
|
-
assert_equal(Etc.getlogin, @sid.account)
|
106
|
-
end
|
107
|
-
|
108
|
-
test "constructor accepts an account argument" do
|
109
|
-
assert_nothing_raised{ Security::SID.new(@@name) }
|
110
|
-
end
|
111
|
-
|
112
|
-
test "constructor accepts a host argument" do
|
113
|
-
assert_nothing_raised{ Security::SID.new(@@name, @@host) }
|
114
|
-
end
|
115
|
-
|
116
|
-
test "constructor accepts a maximum of two arguments" do
|
117
|
-
assert_raise(ArgumentError){ Security::SID.new(@@name, @@host, @@host) }
|
118
|
-
end
|
119
|
-
|
120
|
-
test "constructor raises an error if an invalid account is passed" do
|
121
|
-
assert_raise(SystemCallError){ Security::SID.new('bogus') }
|
122
|
-
end
|
123
|
-
|
124
|
-
test "well known sid constants are defined" do
|
125
|
-
assert_equal('S-1-0', Security::SID::Null)
|
126
|
-
assert_equal('S-1-0-0', Security::SID::Nobody)
|
127
|
-
assert_equal('S-1-1', Security::SID::World)
|
128
|
-
assert_equal('S-1-1-0', Security::SID::Everyone)
|
129
|
-
assert_equal('S-1-5-32-544', Security::SID::BuiltinAdministrators)
|
130
|
-
assert_equal('S-1-5-32-545', Security::SID::BuiltinUsers)
|
131
|
-
assert_equal('S-1-5-32-546', Security::SID::Guests)
|
132
|
-
end
|
133
|
-
|
134
|
-
def teardown
|
135
|
-
@sid = nil
|
136
|
-
end
|
137
|
-
|
138
|
-
def self.shutdown
|
139
|
-
@@host = nil
|
140
|
-
@@name = nil
|
141
|
-
end
|
142
|
-
end
|
1
|
+
########################################################################
|
2
|
+
# test_sid.rb
|
3
|
+
#
|
4
|
+
# Test suite for the Win32::Security::SID class. You should run these
|
5
|
+
# tests via the 'rake test' task.
|
6
|
+
########################################################################
|
7
|
+
require 'etc'
|
8
|
+
require 'test-unit'
|
9
|
+
require 'win32/security'
|
10
|
+
include Win32
|
11
|
+
|
12
|
+
class TC_Win32_Security_Sid < Test::Unit::TestCase
|
13
|
+
def self.startup
|
14
|
+
@@host = Socket.gethostname
|
15
|
+
@@name = Etc.getlogin
|
16
|
+
end
|
17
|
+
|
18
|
+
def setup
|
19
|
+
@sid = Security::SID.new(@@name)
|
20
|
+
end
|
21
|
+
|
22
|
+
test "version is set to expected value" do
|
23
|
+
assert_equal('0.2.2', Security::SID::VERSION)
|
24
|
+
end
|
25
|
+
|
26
|
+
test "sid method basic functionality" do
|
27
|
+
assert_respond_to(@sid, :sid)
|
28
|
+
assert_kind_of(String, @sid.sid)
|
29
|
+
end
|
30
|
+
|
31
|
+
test "account method basic functionality" do
|
32
|
+
assert_respond_to(@sid, :account)
|
33
|
+
assert_kind_of(String, @sid.account)
|
34
|
+
end
|
35
|
+
|
36
|
+
test "account_type method basic functionality" do
|
37
|
+
assert_respond_to(@sid, :account_type)
|
38
|
+
assert_kind_of(String, @sid.account_type)
|
39
|
+
end
|
40
|
+
|
41
|
+
test "domain method basic functionality" do
|
42
|
+
assert_respond_to(@sid, :domain)
|
43
|
+
assert_kind_of(String, @sid.domain)
|
44
|
+
end
|
45
|
+
|
46
|
+
test "host method basic functionality" do
|
47
|
+
assert_respond_to(@sid, :host)
|
48
|
+
assert_kind_of(String, @sid.host)
|
49
|
+
end
|
50
|
+
|
51
|
+
test "sid_to_string works as expected" do
|
52
|
+
assert_respond_to(Security::SID, :sid_to_string)
|
53
|
+
assert_kind_of(String, Security::SID.sid_to_string(@sid.sid))
|
54
|
+
assert_not_nil(Security::SID.sid_to_string(@sid.sid) =~ /\w+\-\w+/)
|
55
|
+
end
|
56
|
+
|
57
|
+
test "string_to_sid works as expected" do
|
58
|
+
assert_respond_to(Security::SID, :string_to_sid)
|
59
|
+
assert_kind_of(String, Security::SID.string_to_sid(@sid.to_s))
|
60
|
+
end
|
61
|
+
|
62
|
+
test "we can convert back and forth between a sid and a string" do
|
63
|
+
str = Security::SID.sid_to_string(@sid.sid)
|
64
|
+
assert_equal(@sid.sid, Security::SID.string_to_sid(str))
|
65
|
+
end
|
66
|
+
|
67
|
+
test "to_s works as expected" do
|
68
|
+
assert_respond_to(@sid, :to_s)
|
69
|
+
assert_kind_of(String, @sid.to_s)
|
70
|
+
assert_true(@sid.to_s.include?('-'))
|
71
|
+
end
|
72
|
+
|
73
|
+
test "to_str is an alias for to_s" do
|
74
|
+
assert_respond_to(@sid, :to_str)
|
75
|
+
assert_alias_method(@sid, :to_str, :to_s)
|
76
|
+
end
|
77
|
+
|
78
|
+
test "equality works as expected" do
|
79
|
+
assert_respond_to(@sid, :==)
|
80
|
+
assert_true(@sid == @sid)
|
81
|
+
end
|
82
|
+
|
83
|
+
test "valid? method works as expected" do
|
84
|
+
assert_respond_to(@sid, :valid?)
|
85
|
+
assert_true(@sid.valid?)
|
86
|
+
end
|
87
|
+
|
88
|
+
test "length method works as expected" do
|
89
|
+
assert_respond_to(@sid, :length)
|
90
|
+
assert_true(@sid.length > 0)
|
91
|
+
end
|
92
|
+
|
93
|
+
test "create method works as expected" do
|
94
|
+
assert_respond_to(Security::SID, :create)
|
95
|
+
assert_nothing_raised{
|
96
|
+
Security::SID.create(
|
97
|
+
Security::SID::SECURITY_WORLD_SID_AUTHORITY,
|
98
|
+
Security::SID::SECURITY_WORLD_RID
|
99
|
+
)
|
100
|
+
}
|
101
|
+
end
|
102
|
+
|
103
|
+
test "constructor defaults to current account" do
|
104
|
+
assert_nothing_raised{ @sid = Security::SID.new }
|
105
|
+
assert_equal(Etc.getlogin, @sid.account)
|
106
|
+
end
|
107
|
+
|
108
|
+
test "constructor accepts an account argument" do
|
109
|
+
assert_nothing_raised{ Security::SID.new(@@name) }
|
110
|
+
end
|
111
|
+
|
112
|
+
test "constructor accepts a host argument" do
|
113
|
+
assert_nothing_raised{ Security::SID.new(@@name, @@host) }
|
114
|
+
end
|
115
|
+
|
116
|
+
test "constructor accepts a maximum of two arguments" do
|
117
|
+
assert_raise(ArgumentError){ Security::SID.new(@@name, @@host, @@host) }
|
118
|
+
end
|
119
|
+
|
120
|
+
test "constructor raises an error if an invalid account is passed" do
|
121
|
+
assert_raise(SystemCallError){ Security::SID.new('bogus') }
|
122
|
+
end
|
123
|
+
|
124
|
+
test "well known sid constants are defined" do
|
125
|
+
assert_equal('S-1-0', Security::SID::Null)
|
126
|
+
assert_equal('S-1-0-0', Security::SID::Nobody)
|
127
|
+
assert_equal('S-1-1', Security::SID::World)
|
128
|
+
assert_equal('S-1-1-0', Security::SID::Everyone)
|
129
|
+
assert_equal('S-1-5-32-544', Security::SID::BuiltinAdministrators)
|
130
|
+
assert_equal('S-1-5-32-545', Security::SID::BuiltinUsers)
|
131
|
+
assert_equal('S-1-5-32-546', Security::SID::Guests)
|
132
|
+
end
|
133
|
+
|
134
|
+
def teardown
|
135
|
+
@sid = nil
|
136
|
+
end
|
137
|
+
|
138
|
+
def self.shutdown
|
139
|
+
@@host = nil
|
140
|
+
@@name = nil
|
141
|
+
end
|
142
|
+
end
|
data/win32-security.gemspec
CHANGED
@@ -1,27 +1,28 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
|
3
|
-
Gem::Specification.new do |spec|
|
4
|
-
spec.name = 'win32-security'
|
5
|
-
spec.version = '0.3.
|
6
|
-
spec.authors = ['Daniel J. Berger', 'Park Heesob']
|
7
|
-
spec.license = 'Artistic 2.0'
|
8
|
-
spec.email = 'djberg96@gmail.com'
|
9
|
-
spec.homepage = 'https://github.com/djberg96/win32-security'
|
10
|
-
spec.summary = 'A library for dealing with aspects of Windows security.'
|
11
|
-
spec.test_files = Dir['test/*.rb']
|
12
|
-
spec.files = Dir['**/*'].reject{ |f| f.include?('git') }
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
spec.add_development_dependency('
|
20
|
-
spec.add_development_dependency('
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
security
|
25
|
-
|
26
|
-
|
27
|
-
|
1
|
+
require 'rubygems'
|
2
|
+
|
3
|
+
Gem::Specification.new do |spec|
|
4
|
+
spec.name = 'win32-security'
|
5
|
+
spec.version = '0.3.2'
|
6
|
+
spec.authors = ['Daniel J. Berger', 'Park Heesob']
|
7
|
+
spec.license = 'Artistic 2.0'
|
8
|
+
spec.email = 'djberg96@gmail.com'
|
9
|
+
spec.homepage = 'https://github.com/djberg96/win32-security'
|
10
|
+
spec.summary = 'A library for dealing with aspects of Windows security.'
|
11
|
+
spec.test_files = Dir['test/*.rb']
|
12
|
+
spec.files = Dir['**/*'].reject{ |f| f.include?('git') }
|
13
|
+
spec.cert_chain = Dir['certs/*']
|
14
|
+
|
15
|
+
spec.extra_rdoc_files = ['README', 'CHANGES', 'MANIFEST']
|
16
|
+
|
17
|
+
spec.add_dependency('ffi')
|
18
|
+
|
19
|
+
spec.add_development_dependency('rake')
|
20
|
+
spec.add_development_dependency('test-unit', '>= 2.5.0')
|
21
|
+
spec.add_development_dependency('sys-admin', '>= 1.6.0')
|
22
|
+
|
23
|
+
spec.description = <<-EOF
|
24
|
+
The win32-security library provides an interface for dealing with
|
25
|
+
security related aspects of MS Windows, such as SID's, ACL's and
|
26
|
+
ACE's.
|
27
|
+
EOF
|
28
|
+
end
|
metadata
CHANGED
@@ -1,70 +1,92 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: win32-security
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel J. Berger
|
8
8
|
- Park Heesob
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
|
-
cert_chain:
|
12
|
-
|
11
|
+
cert_chain:
|
12
|
+
- |
|
13
|
+
-----BEGIN CERTIFICATE-----
|
14
|
+
MIIDcDCCAligAwIBAgIBATANBgkqhkiG9w0BAQUFADA/MREwDwYDVQQDDAhkamJl
|
15
|
+
cmc5NjEVMBMGCgmSJomT8ixkARkWBWdtYWlsMRMwEQYKCZImiZPyLGQBGRYDY29t
|
16
|
+
MB4XDTE1MDkwMjIwNDkxOFoXDTE2MDkwMTIwNDkxOFowPzERMA8GA1UEAwwIZGpi
|
17
|
+
ZXJnOTYxFTATBgoJkiaJk/IsZAEZFgVnbWFpbDETMBEGCgmSJomT8ixkARkWA2Nv
|
18
|
+
bTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMyTkvXqRp6hLs9eoJOS
|
19
|
+
Hmi8kRYbq9Vkf15/hMxJpotYMgJVHHWrmDcC5Dye2PbnXjTkKf266Zw0PtT9h+lI
|
20
|
+
S3ts9HO+vaCFSMwFFZmnWJSpQ3CNw2RcHxjWkk9yF7imEM8Kz9ojhiDXzBetdV6M
|
21
|
+
gr0lV/alUr7TNVBDngbXEfTWscyXh1qd7xZ4EcOdsDktCe5G45N/o3662tPQvJsi
|
22
|
+
FOF0CM/KuBsa/HL1/eoEmF4B3EKIRfTHrQ3hu20Kv3RJ88QM4ec2+0dd97uX693O
|
23
|
+
zv6981fyEg+aXLkxrkViM/tz2qR2ZE0jPhHTREPYeMEgptRkTmWSKAuLVWrJEfgl
|
24
|
+
DtkCAwEAAaN3MHUwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFEwe
|
25
|
+
nn6bfJADmuIDiMSOzedOrL+xMB0GA1UdEQQWMBSBEmRqYmVyZzk2QGdtYWlsLmNv
|
26
|
+
bTAdBgNVHRIEFjAUgRJkamJlcmc5NkBnbWFpbC5jb20wDQYJKoZIhvcNAQEFBQAD
|
27
|
+
ggEBAHmNOCWoDVD75zHFueY0viwGDVP1BNGFC+yXcb7u2GlK+nEMCORqzURbYPf7
|
28
|
+
tL+/hzmePIRz7i30UM//64GI1NLv9jl7nIwjhPpXpf7/lu2I9hOTsvwSumb5UiKC
|
29
|
+
/sqBxI3sfj9pr79Wpv4MuikX1XPik7Ncb7NPsJPw06Lvyc3Hkg5X2XpPtLtS+Gr2
|
30
|
+
wKJnmzb5rIPS1cmsqv0M9LPWflzfwoZ/SpnmhagP+g05p8bRNKjZSA2iImM/GyYZ
|
31
|
+
EJYzxdPOrx2n6NYR3Hk+vHP0U7UBSveI6+qx+ndQYaeyCn+GRX2PKS9h66YF/Q1V
|
32
|
+
tGSHgAmcLlkdGgan182qsE/4kKM=
|
33
|
+
-----END CERTIFICATE-----
|
34
|
+
date: 2015-12-04 00:00:00.000000000 Z
|
13
35
|
dependencies:
|
14
36
|
- !ruby/object:Gem::Dependency
|
15
37
|
name: ffi
|
16
38
|
requirement: !ruby/object:Gem::Requirement
|
17
39
|
requirements:
|
18
|
-
- -
|
40
|
+
- - ">="
|
19
41
|
- !ruby/object:Gem::Version
|
20
42
|
version: '0'
|
21
43
|
type: :runtime
|
22
44
|
prerelease: false
|
23
45
|
version_requirements: !ruby/object:Gem::Requirement
|
24
46
|
requirements:
|
25
|
-
- -
|
47
|
+
- - ">="
|
26
48
|
- !ruby/object:Gem::Version
|
27
49
|
version: '0'
|
28
50
|
- !ruby/object:Gem::Dependency
|
29
51
|
name: rake
|
30
52
|
requirement: !ruby/object:Gem::Requirement
|
31
53
|
requirements:
|
32
|
-
- -
|
54
|
+
- - ">="
|
33
55
|
- !ruby/object:Gem::Version
|
34
56
|
version: '0'
|
35
57
|
type: :development
|
36
58
|
prerelease: false
|
37
59
|
version_requirements: !ruby/object:Gem::Requirement
|
38
60
|
requirements:
|
39
|
-
- -
|
61
|
+
- - ">="
|
40
62
|
- !ruby/object:Gem::Version
|
41
63
|
version: '0'
|
42
64
|
- !ruby/object:Gem::Dependency
|
43
65
|
name: test-unit
|
44
66
|
requirement: !ruby/object:Gem::Requirement
|
45
67
|
requirements:
|
46
|
-
- -
|
68
|
+
- - ">="
|
47
69
|
- !ruby/object:Gem::Version
|
48
70
|
version: 2.5.0
|
49
71
|
type: :development
|
50
72
|
prerelease: false
|
51
73
|
version_requirements: !ruby/object:Gem::Requirement
|
52
74
|
requirements:
|
53
|
-
- -
|
75
|
+
- - ">="
|
54
76
|
- !ruby/object:Gem::Version
|
55
77
|
version: 2.5.0
|
56
78
|
- !ruby/object:Gem::Dependency
|
57
79
|
name: sys-admin
|
58
80
|
requirement: !ruby/object:Gem::Requirement
|
59
81
|
requirements:
|
60
|
-
- -
|
82
|
+
- - ">="
|
61
83
|
- !ruby/object:Gem::Version
|
62
84
|
version: 1.6.0
|
63
85
|
type: :development
|
64
86
|
prerelease: false
|
65
87
|
version_requirements: !ruby/object:Gem::Requirement
|
66
88
|
requirements:
|
67
|
-
- -
|
89
|
+
- - ">="
|
68
90
|
- !ruby/object:Gem::Version
|
69
91
|
version: 1.6.0
|
70
92
|
description: |2
|
@@ -79,17 +101,25 @@ extra_rdoc_files:
|
|
79
101
|
- CHANGES
|
80
102
|
- MANIFEST
|
81
103
|
files:
|
104
|
+
- certs
|
105
|
+
- certs/djberg96_pub.pem
|
82
106
|
- CHANGES
|
83
|
-
-
|
84
|
-
-
|
85
|
-
-
|
86
|
-
- lib/win32/security.rb
|
107
|
+
- lib
|
108
|
+
- lib/win32
|
109
|
+
- lib/win32/security
|
87
110
|
- lib/win32/security/ace.rb
|
88
111
|
- lib/win32/security/acl.rb
|
89
112
|
- lib/win32/security/sid.rb
|
113
|
+
- lib/win32/security/windows
|
90
114
|
- lib/win32/security/windows/constants.rb
|
91
115
|
- lib/win32/security/windows/functions.rb
|
92
116
|
- lib/win32/security/windows/structs.rb
|
117
|
+
- lib/win32/security.rb
|
118
|
+
- lib/win32-security.rb
|
119
|
+
- MANIFEST
|
120
|
+
- Rakefile
|
121
|
+
- README
|
122
|
+
- test
|
93
123
|
- test/test_ace.rb
|
94
124
|
- test/test_acl.rb
|
95
125
|
- test/test_security.rb
|
@@ -105,17 +135,17 @@ require_paths:
|
|
105
135
|
- lib
|
106
136
|
required_ruby_version: !ruby/object:Gem::Requirement
|
107
137
|
requirements:
|
108
|
-
- -
|
138
|
+
- - ">="
|
109
139
|
- !ruby/object:Gem::Version
|
110
140
|
version: '0'
|
111
141
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
112
142
|
requirements:
|
113
|
-
- -
|
143
|
+
- - ">="
|
114
144
|
- !ruby/object:Gem::Version
|
115
145
|
version: '0'
|
116
146
|
requirements: []
|
117
147
|
rubyforge_project:
|
118
|
-
rubygems_version: 2.4.
|
148
|
+
rubygems_version: 2.4.8
|
119
149
|
signing_key:
|
120
150
|
specification_version: 4
|
121
151
|
summary: A library for dealing with aspects of Windows security.
|