Files
2024-11-01 17:43:06 +00:00

68 lines
3.4 KiB
Go

package certstore
import (
"golang.org/x/sys/windows"
)
//go:generate go run golang.org/x/sys/windows/mkwinsyscall -output zsyscall_windows.go syscall_windows.go
type certStoreHandle windows.Handle
// CryptoAPI APIs from wincrypt.h
type cryptProviderHandle windows.Handle // HCRYPTPROV
type cryptHashHandle windows.Handle // HCRYPTHASH
type cryptKeyHandle windows.Handle // HCRYPTKEY
type cryptAlgorithm uint32 // ALG_ID
const (
// Values for ALG_ID
CALG_SHA_256 cryptAlgorithm = 0x0000800c
CALG_SHA_384 cryptAlgorithm = 0x0000800d
CALG_SHA_512 cryptAlgorithm = 0x0000800e
// Values of the dwParam for CryptGetHashParam and/or CryptSetHashParam
HP_ALGID = 0x1
HP_HASHVAL = 0x2
HP_HASHSIZE = 0x4
HP_HMAC_INFO = 0x5
// Values of the dwParam for CryptGetProvParam and/or CryptSetProvParam
PP_NAME = 4
PP_CONTAINER = 6
PP_PROVTYPE = 16
)
// https://learn.microsoft.com/en-ca/windows/win32/api/wincrypt/nf-wincrypt-cryptcreatehash
//sys cryptCreateHash(hProv cryptProviderHandle, Algid cryptAlgorithm, hKey cryptKeyHandle, dwFlags uint32, phHash *cryptHashHandle) (err error) = advapi32.CryptCreateHash
// https://learn.microsoft.com/en-us/windows/win32/api/wincrypt/nf-wincrypt-cryptdestroyhash
//sys cryptDestroyHash(hHash cryptHashHandle) (err error) = advapi32.CryptDestroyHash
// https://learn.microsoft.com/en-ca/windows/win32/api/wincrypt/nf-wincrypt-cryptgethashparam
//sys cryptGetHashParam(hHash cryptHashHandle, dwParam uint32, pbData unsafe.Pointer, pdwDataLen *uint32, dwFlags uint32) (err error) = advapi32.CryptGetHashParam
// https://learn.microsoft.com/en-ca/windows/win32/api/wincrypt/nf-wincrypt-cryptsethashparam
//sys cryptSetHashParam(hHash cryptHashHandle, dwParam uint32, pbData unsafe.Pointer, dwFlags uint32) (err error) = advapi32.CryptSetHashParam
// https://learn.microsoft.com/en-ca/windows/win32/api/wincrypt/nf-wincrypt-cryptsignhashw
//sys cryptSignHash(hHash cryptHashHandle, dwKeySpec uint32, szDescription *uint16, dwFlags uint32, pbSignature *byte, pdwSigLen *uint32) (err error) = advapi32.CryptSignHashW
// https://learn.microsoft.com/en-us/windows/win32/api/wincrypt/nf-wincrypt-cryptgetprovparam
//sys cryptGetProvParam(hProv cryptProviderHandle, dwParam uint32, pbData *byte, pdwDataLen *uint32, dwFlags uint32) (err error) = advapi32.CryptGetProvParam
// https://learn.microsoft.com/en-us/windows/win32/api/wincrypt/nf-wincrypt-cryptsetprovparam
//sys cryptSetProvParam(hProv cryptProviderHandle, dwParam uint32, pbData *byte, dwFlags uint32) (err error) = advapi32.CryptSetProvParam
// CNG APIs from bcrypt.h and ncrypt.h.
const (
// Flags for NCryptSignHash and others
BCRYPT_PAD_NONE = 0x00000001
BCRYPT_PAD_PKCS1 = 0x00000002
BCRYPT_PAD_OAEP = 0x00000004
BCRYPT_PAD_PSS = 0x00000008
)
type nCryptKeyHandle windows.Handle
// https://learn.microsoft.com/en-us/windows/win32/api/ncrypt/nf-ncrypt-ncryptsignhash
//sys nCryptSignHash(hKey nCryptKeyHandle, pPaddingInfo unsafe.Pointer, pbHashValue *byte, cbHashValue uint32, pbSignature *byte, cbSignature uint32, pcbResult *uint32, dwFlags uint32) (ret error) = ncrypt.NCryptSignHash
// https://learn.microsoft.com/en-us/windows/win32/api/ncrypt/nf-ncrypt-ncryptdeletekey
//sys nCryptDeleteKey(hKey nCryptKeyHandle, dwFlags uint32) (ret error) = ncrypt.NCryptDeleteKey
// https://learn.microsoft.com/en-us/windows/win32/api/ncrypt/nf-ncrypt-ncryptfreeobject
//sys nCryptFreeObject(hObject windows.Handle) (ret error) = ncrypt.NCryptFreeObject