winrm 1.0.0rc2 → 1.0.0rc3
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/VERSION +1 -1
- data/lib/winrm/http/transport.rb +14 -5
- metadata +2 -2
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.0.
|
1
|
+
1.0.0rc3
|
data/lib/winrm/http/transport.rb
CHANGED
@@ -73,7 +73,7 @@ module WinRM
|
|
73
73
|
|
74
74
|
def send_request(msg)
|
75
75
|
original_length = msg.length
|
76
|
-
emsg = winrm_encrypt(msg)
|
76
|
+
pad_len, emsg = winrm_encrypt(msg)
|
77
77
|
hdr = {
|
78
78
|
"Connection" => "Keep-Alive",
|
79
79
|
"Content-Type" => "multipart/encrypted;protocol=\"application/HTTP-Kerberos-session-encrypted\";boundary=\"Encrypted Boundary\""
|
@@ -82,7 +82,7 @@ module WinRM
|
|
82
82
|
body = <<-EOF
|
83
83
|
--Encrypted Boundary\r
|
84
84
|
Content-Type: application/HTTP-Kerberos-session-encrypted\r
|
85
|
-
OriginalContent: type=application/soap+xml;charset=UTF-8;Length=#{original_length}\r
|
85
|
+
OriginalContent: type=application/soap+xml;charset=UTF-8;Length=#{original_length + pad_len}\r
|
86
86
|
--Encrypted Boundary\r
|
87
87
|
Content-Type: application/octet-stream\r
|
88
88
|
#{emsg}--Encrypted Boundary\r
|
@@ -115,7 +115,7 @@ Content-Type: application/octet-stream\r
|
|
115
115
|
|
116
116
|
# @return [String] the encrypted request string
|
117
117
|
def winrm_encrypt(str)
|
118
|
-
iov_cnt =
|
118
|
+
iov_cnt = 3
|
119
119
|
iov = FFI::MemoryPointer.new(GSSAPI::LibGSSAPI::GssIOVBufferDesc.size * iov_cnt)
|
120
120
|
|
121
121
|
iov0 = GSSAPI::LibGSSAPI::GssIOVBufferDesc.new(FFI::Pointer.new(iov.address))
|
@@ -125,20 +125,26 @@ Content-Type: application/octet-stream\r
|
|
125
125
|
iov1[:type] = (GSSAPI::LibGSSAPI::GSS_IOV_BUFFER_TYPE_DATA)
|
126
126
|
iov1[:buffer].value = str
|
127
127
|
|
128
|
+
iov2 = GSSAPI::LibGSSAPI::GssIOVBufferDesc.new(FFI::Pointer.new(iov.address + (GSSAPI::LibGSSAPI::GssIOVBufferDesc.size * 2)))
|
129
|
+
iov2[:type] = (GSSAPI::LibGSSAPI::GSS_IOV_BUFFER_TYPE_PADDING | GSSAPI::LibGSSAPI::GSS_IOV_BUFFER_FLAG_ALLOCATE)
|
130
|
+
|
128
131
|
conf_state = FFI::MemoryPointer.new :uint32
|
129
132
|
min_stat = FFI::MemoryPointer.new :uint32
|
130
133
|
|
131
|
-
maj_stat = GSSAPI::LibGSSAPI.gss_wrap_iov(min_stat, @gsscli.context, 1,
|
134
|
+
maj_stat = GSSAPI::LibGSSAPI.gss_wrap_iov(min_stat, @gsscli.context, 1, GSSAPI::LibGSSAPI::GSS_C_QOP_DEFAULT, conf_state, iov, iov_cnt)
|
132
135
|
|
133
136
|
token = [iov0[:buffer].length].pack('L')
|
134
137
|
token += iov0[:buffer].value
|
135
138
|
token += iov1[:buffer].value
|
139
|
+
pad_len = iov2[:buffer].length
|
140
|
+
token += iov2[:buffer].value if pad_len > 0
|
141
|
+
[pad_len, token]
|
136
142
|
end
|
137
143
|
|
138
144
|
|
139
145
|
# @return [String] the unencrypted response string
|
140
146
|
def winrm_decrypt(str)
|
141
|
-
iov_cnt =
|
147
|
+
iov_cnt = 3
|
142
148
|
iov = FFI::MemoryPointer.new(GSSAPI::LibGSSAPI::GssIOVBufferDesc.size * iov_cnt)
|
143
149
|
|
144
150
|
iov0 = GSSAPI::LibGSSAPI::GssIOVBufferDesc.new(FFI::Pointer.new(iov.address))
|
@@ -147,6 +153,9 @@ Content-Type: application/octet-stream\r
|
|
147
153
|
iov1 = GSSAPI::LibGSSAPI::GssIOVBufferDesc.new(FFI::Pointer.new(iov.address + (GSSAPI::LibGSSAPI::GssIOVBufferDesc.size * 1)))
|
148
154
|
iov1[:type] = (GSSAPI::LibGSSAPI::GSS_IOV_BUFFER_TYPE_DATA)
|
149
155
|
|
156
|
+
iov2 = GSSAPI::LibGSSAPI::GssIOVBufferDesc.new(FFI::Pointer.new(iov.address + (GSSAPI::LibGSSAPI::GssIOVBufferDesc.size * 2)))
|
157
|
+
iov2[:type] = (GSSAPI::LibGSSAPI::GSS_IOV_BUFFER_TYPE_DATA)
|
158
|
+
|
150
159
|
str.force_encoding('BINARY')
|
151
160
|
str.sub!(/^.*Content-Type: application\/octet-stream\r\n(.*)--Encrypted.*$/m, '\1')
|
152
161
|
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: winrm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease: 5
|
5
|
-
version: 1.0.
|
5
|
+
version: 1.0.0rc3
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Dan Wanek
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-03-
|
13
|
+
date: 2011-03-18 00:00:00 -05:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|