...

Source file src/github.com/Azure/go-ntlmssp/varfield.go

Documentation: github.com/Azure/go-ntlmssp

     1  package ntlmssp
     2  
     3  import (
     4  	"errors"
     5  )
     6  
     7  type varField struct {
     8  	Len          uint16
     9  	MaxLen       uint16
    10  	BufferOffset uint32
    11  }
    12  
    13  func (f varField) ReadFrom(buffer []byte) ([]byte, error) {
    14  	if len(buffer) < int(f.BufferOffset+uint32(f.Len)) {
    15  		return nil, errors.New("Error reading data, varField extends beyond buffer")
    16  	}
    17  	return buffer[f.BufferOffset : f.BufferOffset+uint32(f.Len)], nil
    18  }
    19  
    20  func (f varField) ReadStringFrom(buffer []byte, unicode bool) (string, error) {
    21  	d, err := f.ReadFrom(buffer)
    22  	if err != nil {
    23  		return "", err
    24  	}
    25  	if unicode { // UTF-16LE encoding scheme
    26  		return fromUnicode(d)
    27  	}
    28  	// OEM encoding, close enough to ASCII, since no code page is specified
    29  	return string(d), err
    30  }
    31  
    32  func newVarField(ptr *int, fieldsize int) varField {
    33  	f := varField{
    34  		Len:          uint16(fieldsize),
    35  		MaxLen:       uint16(fieldsize),
    36  		BufferOffset: uint32(*ptr),
    37  	}
    38  	*ptr += fieldsize
    39  	return f
    40  }
    41  

View as plain text