Class: Win32::SSPI::SecurityBuffer

Inherits:
Object
  • Object
show all
Defined in:
lib/win32/sspi.rb

Overview

Creates binary representaiton of a SecBufferDesc structure, including the SecBuffer contained inside.

Constant Summary

SECBUFFER_TOKEN =

Security token

2
TOKENBUFSIZE =
12288
SECBUFFER_VERSION =
0

Instance Method Summary collapse

Constructor Details

#initialize(buffer = nil) ⇒ SecurityBuffer

Returns a new instance of SecurityBuffer



84
85
86
87
88
# File 'lib/win32/sspi.rb', line 84

def initialize(buffer = nil)
	@buffer = buffer || "\0" * TOKENBUFSIZE
	@bufferSize = @buffer.length
	@type = SECBUFFER_TOKEN
end

Instance Method Details

#bufferSizeObject



90
91
92
93
# File 'lib/win32/sspi.rb', line 90

def bufferSize
	unpack
	@bufferSize
end

#bufferTypeObject



95
96
97
98
# File 'lib/win32/sspi.rb', line 95

def bufferType
	unpack
	@type
end

#to_pObject



105
106
107
108
109
110
111
112
113
114
# File 'lib/win32/sspi.rb', line 105

def to_p
	# Assumption is that when to_p is called we are going to get a packed structure. Therefore,
	# set @unpacked back to nil so we know to unpack when accessors are next accessed.
	@unpacked = nil
	# Assignment of inner structure to variable is very important here. Without it,
	# will not be able to unpack changes to the structure. Alternative, nested unpacks,
	# does not work (i.e. @struct.unpack("LLP12")[2].unpack("LLP12") results in "no associated pointer")
	@sec_buffer ||= [@bufferSize, @type, @buffer].pack("LLP")
	@struct ||= [SECBUFFER_VERSION, 1, @sec_buffer].pack("LLP")
end

#tokenObject



100
101
102
103
# File 'lib/win32/sspi.rb', line 100

def token
	unpack
	@buffer
end