class Win32::SSPI::SecurityBuffer
Creates binary representations 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 win32/lib/win32/sspi.rb, line 92 def initialize(buffer = nil) @buffer = buffer || "\0" * TOKENBUFSIZE @bufferSize = @buffer.length @type = SECBUFFER_TOKEN end
Public Instance Methods
bufferSize()
click to toggle source
# File win32/lib/win32/sspi.rb, line 98 def bufferSize unpack @bufferSize end
bufferType()
click to toggle source
# File win32/lib/win32/sspi.rb, line 103 def bufferType unpack @type end
to_p()
click to toggle source
# File win32/lib/win32/sspi.rb, line 113 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 win32/lib/win32/sspi.rb, line 108 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 win32/lib/win32/sspi.rb, line 129 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