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