class Win32::SSPI::SecurityBuffer
Creates binary representaiton of a SecBufferDesc structure, including the SecBuffer contained inside.
Constants
- SECBUFFER_TOKEN
- SECBUFFER_VERSION
- TOKENBUFSIZE
Public Class Methods
new(buffer = nil)
click to toggle source
# File ext/dl/win32/lib/win32/sspi.rb, line 84 def initialize(buffer = nil) @buffer = buffer || "\0" * TOKENBUFSIZE @bufferSize = @buffer.length @type = SECBUFFER_TOKEN end
Public Instance Methods
bufferSize()
click to toggle source
# File ext/dl/win32/lib/win32/sspi.rb, line 90 def bufferSize unpack @bufferSize end
bufferType()
click to toggle source
# File ext/dl/win32/lib/win32/sspi.rb, line 95 def bufferType unpack @type end
to_p()
click to toggle source
# File ext/dl/win32/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
token()
click to toggle source
# File ext/dl/win32/lib/win32/sspi.rb, line 100 def token unpack @buffer end
Private Instance Methods
unpack()
click to toggle source
Unpacks the SecurityBufferDesc structure into member variables. We only want to do this once per struct, so the struct is deleted after unpacking.
# File ext/dl/win32/lib/win32/sspi.rb, line 121 def unpack if ! @unpacked && @sec_buffer && @struct @bufferSize, @type = @sec_buffer.unpack("LL") @buffer = @sec_buffer.unpack("LLP#{@bufferSize}")[2] @struct = nil @sec_buffer = nil @unpacked = true end end