initial commit
This commit is contained in:
48
src/ntlm/helpers.go
Normal file
48
src/ntlm/helpers.go
Normal file
@@ -0,0 +1,48 @@
|
||||
package ntlm
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"crypto/rand"
|
||||
"unicode/utf16"
|
||||
)
|
||||
|
||||
// Concatenate two byte slices into a new slice
|
||||
func concat(ar ...[]byte) []byte {
|
||||
return bytes.Join(ar, nil)
|
||||
}
|
||||
|
||||
// Create a 0 initialized slice of bytes
|
||||
func zeroBytes(length int) []byte {
|
||||
return make([]byte, length, length)
|
||||
}
|
||||
|
||||
func randomBytes(length int) []byte {
|
||||
randombytes := make([]byte, length)
|
||||
_, err := rand.Read(randombytes)
|
||||
if err != nil {
|
||||
} // TODO: What to do with err here
|
||||
return randombytes
|
||||
}
|
||||
|
||||
// Zero pad the input byte slice to the given size
|
||||
// bytes - input byte slice
|
||||
// offset - where to start taking the bytes from the input slice
|
||||
// size - size of the output byte slize
|
||||
func zeroPaddedBytes(bytes []byte, offset int, size int) []byte {
|
||||
newSlice := zeroBytes(size)
|
||||
for i := 0; i < size && i+offset < len(bytes); i++ {
|
||||
newSlice[i] = bytes[i+offset]
|
||||
}
|
||||
return newSlice
|
||||
}
|
||||
|
||||
func utf16FromString(s string) []byte {
|
||||
encoded := utf16.Encode([]rune(s))
|
||||
// TODO: I'm sure there is an easier way to do the conversion from utf16 to bytes
|
||||
result := zeroBytes(len(encoded) * 2)
|
||||
for i := 0; i < len(encoded); i++ {
|
||||
result[i*2] = byte(encoded[i])
|
||||
result[i*2+1] = byte(encoded[i] << 8)
|
||||
}
|
||||
return result
|
||||
}
|
||||
Reference in New Issue
Block a user