100 lines
4.3 KiB
Go
100 lines
4.3 KiB
Go
// Code generated by 'go generate'; DO NOT EDIT.
|
|
|
|
package schannel
|
|
|
|
import (
|
|
"syscall"
|
|
"unsafe"
|
|
|
|
"golang.org/x/sys/windows"
|
|
)
|
|
|
|
var _ unsafe.Pointer
|
|
|
|
// Do the interface allocations only once for common
|
|
// Errno values.
|
|
const (
|
|
errnoERROR_IO_PENDING = 997
|
|
)
|
|
|
|
var (
|
|
errERROR_IO_PENDING error = syscall.Errno(errnoERROR_IO_PENDING)
|
|
errERROR_EINVAL error = syscall.EINVAL
|
|
)
|
|
|
|
// errnoErr returns common boxed Errno values, to prevent
|
|
// allocations at runtime.
|
|
func errnoErr(e syscall.Errno) error {
|
|
switch e {
|
|
case 0:
|
|
return errERROR_EINVAL
|
|
case errnoERROR_IO_PENDING:
|
|
return errERROR_IO_PENDING
|
|
}
|
|
// TODO: add more here, after collecting data on the common
|
|
// error values see on Windows. (perhaps when running
|
|
// all.bat?)
|
|
return e
|
|
}
|
|
|
|
var (
|
|
modsecur32 = windows.NewLazySystemDLL("secur32.dll")
|
|
|
|
procAcquireCredentialsHandleW = modsecur32.NewProc("AcquireCredentialsHandleW")
|
|
procDecryptMessage = modsecur32.NewProc("DecryptMessage")
|
|
procDeleteSecurityContext = modsecur32.NewProc("DeleteSecurityContext")
|
|
procEncryptMessage = modsecur32.NewProc("EncryptMessage")
|
|
procFreeContextBuffer = modsecur32.NewProc("FreeContextBuffer")
|
|
procFreeCredentialsHandle = modsecur32.NewProc("FreeCredentialsHandle")
|
|
procInitializeSecurityContextW = modsecur32.NewProc("InitializeSecurityContextW")
|
|
procQueryContextAttributesW = modsecur32.NewProc("QueryContextAttributesW")
|
|
)
|
|
|
|
func sspiAcquireCredentialsHandle(principal *uint16, pkgname *uint16, credentialUse uint32, logonID *uint64, authData unsafe.Pointer, getKeyFn uintptr, getKeyArg uintptr, credential *secHandle, expiry *windows.Filetime) (ret syscall.Errno) {
|
|
r0, _, _ := syscall.SyscallN(procAcquireCredentialsHandleW.Addr(), uintptr(unsafe.Pointer(principal)), uintptr(unsafe.Pointer(pkgname)), uintptr(credentialUse), uintptr(unsafe.Pointer(logonID)), uintptr(authData), uintptr(getKeyFn), uintptr(getKeyArg), uintptr(unsafe.Pointer(credential)), uintptr(unsafe.Pointer(expiry)))
|
|
ret = syscall.Errno(r0)
|
|
return
|
|
}
|
|
|
|
func sspiDecryptMessage(context *secHandle, message *secBufferDesc, sequenceNumber uint32, qop *uint32) (ret syscall.Errno) {
|
|
r0, _, _ := syscall.SyscallN(procDecryptMessage.Addr(), uintptr(unsafe.Pointer(context)), uintptr(unsafe.Pointer(message)), uintptr(sequenceNumber), uintptr(unsafe.Pointer(qop)))
|
|
ret = syscall.Errno(r0)
|
|
return
|
|
}
|
|
|
|
func sspiDeleteSecurityContext(context *secHandle) (ret syscall.Errno) {
|
|
r0, _, _ := syscall.SyscallN(procDeleteSecurityContext.Addr(), uintptr(unsafe.Pointer(context)))
|
|
ret = syscall.Errno(r0)
|
|
return
|
|
}
|
|
|
|
func sspiEncryptMessage(context *secHandle, qop uint32, message *secBufferDesc, sequenceNumber uint32) (ret syscall.Errno) {
|
|
r0, _, _ := syscall.SyscallN(procEncryptMessage.Addr(), uintptr(unsafe.Pointer(context)), uintptr(qop), uintptr(unsafe.Pointer(message)), uintptr(sequenceNumber))
|
|
ret = syscall.Errno(r0)
|
|
return
|
|
}
|
|
|
|
func sspiFreeContextBuffer(buffer *byte) (ret syscall.Errno) {
|
|
r0, _, _ := syscall.SyscallN(procFreeContextBuffer.Addr(), uintptr(unsafe.Pointer(buffer)))
|
|
ret = syscall.Errno(r0)
|
|
return
|
|
}
|
|
|
|
func sspiFreeCredentialsHandle(credential *secHandle) (ret syscall.Errno) {
|
|
r0, _, _ := syscall.SyscallN(procFreeCredentialsHandle.Addr(), uintptr(unsafe.Pointer(credential)))
|
|
ret = syscall.Errno(r0)
|
|
return
|
|
}
|
|
|
|
func sspiInitializeSecurityContext(credential *secHandle, context *secHandle, targetName *uint16, contextReq uint32, reserved1 uint32, targetDataRep uint32, input *secBufferDesc, reserved2 uint32, newContext *secHandle, output *secBufferDesc, contextAttr *uint32, expiry *windows.Filetime) (ret syscall.Errno) {
|
|
r0, _, _ := syscall.SyscallN(procInitializeSecurityContextW.Addr(), uintptr(unsafe.Pointer(credential)), uintptr(unsafe.Pointer(context)), uintptr(unsafe.Pointer(targetName)), uintptr(contextReq), uintptr(reserved1), uintptr(targetDataRep), uintptr(unsafe.Pointer(input)), uintptr(reserved2), uintptr(unsafe.Pointer(newContext)), uintptr(unsafe.Pointer(output)), uintptr(unsafe.Pointer(contextAttr)), uintptr(unsafe.Pointer(expiry)))
|
|
ret = syscall.Errno(r0)
|
|
return
|
|
}
|
|
|
|
func sspiQueryContextAttributes(context *secHandle, attribute uint32, buffer unsafe.Pointer) (ret syscall.Errno) {
|
|
r0, _, _ := syscall.SyscallN(procQueryContextAttributesW.Addr(), uintptr(unsafe.Pointer(context)), uintptr(attribute), uintptr(buffer))
|
|
ret = syscall.Errno(r0)
|
|
return
|
|
}
|