bcrypt

package
v0.0.0-...-8fad06f Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 27, 2026 License: MIT Imports: 5 Imported by: 0

Documentation

Rendered for windows/amd64

Overview

Package bcrypt implements interop with bcrypt.dll, a component of Windows CNG. See https://learn.microsoft.com/en-us/windows/win32/api/bcrypt/

Note: this package is not related to the bcrypt password hashing algorithm.

Index

Constants

View Source
const (
	SHA1_ALGORITHM       = "SHA1"
	SHA256_ALGORITHM     = "SHA256"
	SHA384_ALGORITHM     = "SHA384"
	SHA512_ALGORITHM     = "SHA512"
	SHA3_256_ALGORITHM   = "SHA3-256"
	SHA3_384_ALGORITHM   = "SHA3-384"
	SHA3_512_ALGORITHM   = "SHA3-512"
	CSHAKE128_ALGORITHM  = "CSHAKE128"
	CSHAKE256_ALGORITHM  = "CSHAKE256"
	AES_ALGORITHM        = "AES"
	RC4_ALGORITHM        = "RC4"
	RSA_ALGORITHM        = "RSA"
	MD4_ALGORITHM        = "MD4"
	MD5_ALGORITHM        = "MD5"
	ECDSA_ALGORITHM      = "ECDSA"
	ECDH_ALGORITHM       = "ECDH"
	HKDF_ALGORITHM       = "HKDF"
	PBKDF2_ALGORITHM     = "PBKDF2"
	DES_ALGORITHM        = "DES"
	DES3_ALGORITHM       = "3DES" // 3DES_ALGORITHM
	TLS1_1_KDF_ALGORITHM = "TLS1_1_KDF"
	TLS1_2_KDF_ALGORITHM = "TLS1_2_KDF"
	DSA_ALGORITHM        = "DSA"
	MLKEM_ALGORITHM      = "ML-KEM"

	CHACHA20_POLY1305_ALGORITHM = "CHACHA20_POLY1305"
)
View Source
const (
	ECC_CURVE_25519    = "curve25519"
	ECC_CURVE_NISTP224 = "nistP224"
	ECC_CURVE_NISTP256 = "nistP256"
	ECC_CURVE_NISTP384 = "nistP384"
	ECC_CURVE_NISTP521 = "nistP521"
)
View Source
const (
	HASH_LENGTH          = "HashDigestLength"
	HASH_BLOCK_LENGTH    = "HashBlockLength"
	CHAINING_MODE        = "ChainingMode"
	CHAIN_MODE_ECB       = "ChainingModeECB"
	CHAIN_MODE_CBC       = "ChainingModeCBC"
	CHAIN_MODE_GCM       = "ChainingModeGCM"
	KEY_LENGTH           = "KeyLength"
	KEY_LENGTHS          = "KeyLengths"
	SIGNATURE_LENGTH     = "SignatureLength"
	BLOCK_LENGTH         = "BlockLength"
	ECC_CURVE_NAME       = "ECCCurveName"
	FUNCTION_NAME_STRING = "FunctionNameString"
	CUSTOMIZATION_STRING = "CustomizationString"
)
View Source
const (
	RSAPUBLIC_KEY_BLOB      = "RSAPUBLICBLOB"
	RSAFULLPRIVATE_BLOB     = "RSAFULLPRIVATEBLOB"
	ECCPUBLIC_BLOB          = "ECCPUBLICBLOB"
	ECCPRIVATE_BLOB         = "ECCPRIVATEBLOB"
	DSA_PUBLIC_BLOB         = "DSAPUBLICBLOB"
	DSA_PRIVATE_BLOB        = "DSAPRIVATEBLOB"
	MLKEM_PUBLIC_BLOB       = "MLKEMPUBLICBLOB"
	MLKEM_PRIVATE_SEED_BLOB = "MLKEMPRIVATESEEDBLOB"
)
View Source
const (
	KDF_HKDF_INFO          = 0x14
	HKDF_HASH_ALGORITHM    = "HkdfHashAlgorithm"
	HKDF_SALT_AND_FINALIZE = "HkdfSaltAndFinalize"
	HKDF_PRK_AND_FINALIZE  = "HkdfPrkAndFinalize"
)
View Source
const (
	KDF_HASH_ALGORITHM   = 0x0
	KDF_TLS_PRF_LABEL    = 0x4
	KDF_TLS_PRF_SEED     = 0x5
	KDF_TLS_PRF_PROTOCOL = 0x6
	KDF_ITERATION_COUNT  = 0x10
	KDF_SALT             = 0xF
)
View Source
const (
	KEY_DATA_BLOB          = "KeyDataBlob"
	KEY_DATA_BLOB_MAGIC    = 0x4d42444b
	KEY_DATA_BLOB_VERSION1 = 1
)
View Source
const (
	HASH_DONT_RESET_FLAG = 0x00000001
	HASH_REUSABLE_FLAG   = 0x00000020
)
View Source
const (
	// ML-KEM related properties and constants
	PARAMETER_SET_NAME       = "ParameterSetName"
	MLKEM_PARAMETER_SET_768  = "768"
	MLKEM_PARAMETER_SET_1024 = "1024"
)
View Source
const (
	FORMAT_MESSAGE_FROM_HMODULE   = 2048
	FORMAT_MESSAGE_FROM_SYSTEM    = 4096
	FORMAT_MESSAGE_ARGUMENT_ARRAY = 8192

	LANG_ENGLISH       = 0x09
	SUBLANG_ENGLISH_US = 0x01
)
View Source
const (
	DSA_PARAMETERS = "DSAParameters"
)
View Source
const (
	KDF_RAW_SECRET = "TRUNCATE"
)
View Source
const (
	USE_SYSTEM_PREFERRED_RNG = 0x00000002
)

Variables

This section is empty.

Functions

func CloseAlgorithmProvider

func CloseAlgorithmProvider(hAlgorithm ALG_HANDLE, dwFlags uint32) (ntstatus error)

func CreateHash

func CreateHash(hAlgorithm ALG_HANDLE, phHash *HASH_HANDLE, pbHashObject []byte, pbSecret []byte, dwFlags uint32) (ntstatus error)

func Decapsulate

func Decapsulate(hKey KEY_HANDLE, pbCiphertext []byte, pbSecret []byte, pcbResult *uint32, dwFlags uint32) (ntstatus error)

func Decrypt

func Decrypt(hKey KEY_HANDLE, ciphertext []byte, pPaddingInfo unsafe.Pointer, pbIV []byte, plaintext []byte, pcbResult *uint32, dwFlags PadMode) (ntstatus error)

func DeriveKey

func DeriveKey(hSharedSecret SECRET_HANDLE, pwszKDF *uint16, pParameterList *BufferDesc, pbDerivedKey []byte, pcbResult *uint32, dwFlags uint32) (ntstatus error)

func DestroyHash

func DestroyHash(hHash HASH_HANDLE) (ntstatus error)

func DestroyKey

func DestroyKey(hKey KEY_HANDLE) (ntstatus error)

func DestroySecret

func DestroySecret(hSecret SECRET_HANDLE) (ntstatus error)

func DuplicateHash

func DuplicateHash(hHash HASH_HANDLE, phNewHash *HASH_HANDLE, pbHashObject []byte, dwFlags uint32) (ntstatus error)

func Encapsulate

func Encapsulate(hKey KEY_HANDLE, pbSecret []byte, pcbResult *uint32, pbCiphertext []byte, pcbCiphertext *uint32, dwFlags uint32) (ntstatus error)

func Encrypt

func Encrypt(hKey KEY_HANDLE, plaintext []byte, pPaddingInfo unsafe.Pointer, pbIV []byte, ciphertext []byte, pcbResult *uint32, dwFlags PadMode) (ntstatus error)

func ExportKey

func ExportKey(hKey KEY_HANDLE, hExportKey KEY_HANDLE, pszBlobType *uint16, pbOutput []byte, pcbResult *uint32, dwFlags uint32) (ntstatus error)

func FinalizeKeyPair

func FinalizeKeyPair(hKey KEY_HANDLE, dwFlags uint32) (ntstatus error)

func FinishHash

func FinishHash(hHash HASH_HANDLE, pbOutput []byte, dwFlags uint32) (ntstatus error)

func GenRandom

func GenRandom(hAlgorithm ALG_HANDLE, pbBuffer []byte, dwFlags uint32) (ntstatus error)

func GenerateKeyPair

func GenerateKeyPair(hAlgorithm ALG_HANDLE, phKey *KEY_HANDLE, dwLength uint32, dwFlags uint32) (ntstatus error)

func GenerateSymmetricKey

func GenerateSymmetricKey(hAlgorithm ALG_HANDLE, phKey *KEY_HANDLE, pbKeyObject []byte, pbSecret []byte, dwFlags uint32) error

func GetFipsAlgorithmMode

func GetFipsAlgorithmMode(enabled *bool) (ntstatus error)

func GetProperty

func GetProperty(hObject HANDLE, pszProperty *uint16, pbOutput []byte, pcbResult *uint32, dwFlags uint32) (ntstatus error)

func Hash

func Hash(hAlgorithm ALG_HANDLE, pbSecret []byte, pbInput []byte, pbOutput []byte) (ntstatus error)

func HashData

func HashData(hHash HASH_HANDLE, pbInput []byte, dwFlags uint32) (ntstatus error)

func HashDataRaw

func HashDataRaw(hHash HASH_HANDLE, pbInput *byte, cbInput uint32, dwFlags uint32) (ntstatus error)

func ImportKeyPair

func ImportKeyPair(hAlgorithm ALG_HANDLE, hImportKey KEY_HANDLE, pszBlobType *uint16, phKey *KEY_HANDLE, pbInput []byte, dwFlags uint32) (ntstatus error)

func KeyDerivation

func KeyDerivation(hKey KEY_HANDLE, pParameterList *BufferDesc, pbDerivedKey []byte, pcbResult *uint32, dwFlags uint32) (ntstatus error)

func OpenAlgorithmProvider

func OpenAlgorithmProvider(phAlgorithm *ALG_HANDLE, pszAlgId *uint16, pszImplementation *uint16, dwFlags AlgorithmProviderFlags) (ntstatus error)

func SecretAgreement

func SecretAgreement(hPrivKey KEY_HANDLE, hPubKey KEY_HANDLE, phAgreedSecret *SECRET_HANDLE, dwFlags uint32) (ntstatus error)

func SetProperty

func SetProperty(hObject HANDLE, pszProperty *uint16, pbInput []byte, dwFlags uint32) (ntstatus error)

func SignHash

func SignHash(hKey KEY_HANDLE, pPaddingInfo unsafe.Pointer, pbInput []byte, pbOutput []byte, pcbResult *uint32, dwFlags PadMode) (ntstatus error)

func VerifySignature

func VerifySignature(hKey KEY_HANDLE, pPaddingInfo unsafe.Pointer, pbHash []byte, pbSignature []byte, dwFlags PadMode) (ntstatus error)

Types

type ALG_HANDLE

type ALG_HANDLE HANDLE

type AUTHENTICATED_CIPHER_MODE_INFO

type AUTHENTICATED_CIPHER_MODE_INFO struct {
	Size           uint32
	InfoVersion    uint32
	Nonce          *byte
	NonceSize      uint32
	AuthData       *byte
	AuthDataSize   uint32
	Tag            *byte
	TagSize        uint32
	MacContext     *byte
	MacContextSize uint32
	AADSize        uint32
	DataSize       uint64
	Flags          uint32
}

https://docs.microsoft.com/en-us/windows/win32/api/bcrypt/ns-bcrypt-bcrypt_authenticated_cipher_mode_info

func NewAUTHENTICATED_CIPHER_MODE_INFO

func NewAUTHENTICATED_CIPHER_MODE_INFO(nonce, additionalData, tag []byte) *AUTHENTICATED_CIPHER_MODE_INFO

type AlgorithmProviderFlags

type AlgorithmProviderFlags uint32
const (
	ALG_NONE_FLAG        AlgorithmProviderFlags = 0x00000000
	ALG_HANDLE_HMAC_FLAG AlgorithmProviderFlags = 0x00000008
)

type Buffer

type Buffer struct {
	Length uint32
	Type   uint32
	Data   uintptr
}

type BufferDesc

type BufferDesc struct {
	Version uint32
	Count   uint32 // number of buffers
	Buffers *Buffer
}

type DSAFIPSVERSION_ENUM

type DSAFIPSVERSION_ENUM uint32
const (
	DSA_FIPS186_2 DSAFIPSVERSION_ENUM = iota
	DSA_FIPS186_3
)

type DSA_PARAMETER_HEADER

type DSA_PARAMETER_HEADER struct {
	Length  uint32
	Magic   KeyBlobMagicNumber
	KeySize uint32
	Count   [4]uint8
	Seed    [20]uint8
	Q       [20]uint8
}

type DSA_PARAMETER_HEADER_V2

type DSA_PARAMETER_HEADER_V2 struct {
	Length          uint32
	Magic           KeyBlobMagicNumber
	KeySize         uint32
	HashAlgorithm   HASHALGORITHM_ENUM
	StandardVersion DSAFIPSVERSION_ENUM
	SeedLength      uint32
	GroupSize       uint32
	Count           [4]uint8
}

type HANDLE

type HANDLE syscall.Handle

type HASHALGORITHM_ENUM

type HASHALGORITHM_ENUM uint32
const (
	DSA_HASH_ALGORITHM_SHA1 HASHALGORITHM_ENUM = iota
	DSA_HASH_ALGORITHM_SHA256
	DSA_HASH_ALGORITHM_SHA512
)

type HASH_HANDLE

type HASH_HANDLE HANDLE

type KEY_DATA_BLOB_HEADER

type KEY_DATA_BLOB_HEADER struct {
	Magic   uint32
	Version uint32
	Length  uint32
}

type KEY_HANDLE

type KEY_HANDLE HANDLE

type KeyBlobMagicNumber

type KeyBlobMagicNumber uint32
const (
	RSAPUBLIC_MAGIC      KeyBlobMagicNumber = 0x31415352
	RSAFULLPRIVATE_MAGIC KeyBlobMagicNumber = 0x33415352

	ECDSA_PUBLIC_GENERIC_MAGIC  KeyBlobMagicNumber = 0x50444345
	ECDSA_PRIVATE_GENERIC_MAGIC KeyBlobMagicNumber = 0x56444345

	ECDH_PUBLIC_GENERIC_MAGIC  KeyBlobMagicNumber = 0x504B4345
	ECDH_PRIVATE_GENERIC_MAGIC KeyBlobMagicNumber = 0x564B4345

	DSA_PARAMETERS_MAGIC KeyBlobMagicNumber = 0x4d505344
	DSA_PUBLIC_MAGIC     KeyBlobMagicNumber = 0x42505344
	DSA_PRIVATE_MAGIC    KeyBlobMagicNumber = 0x56505344

	DSA_PARAMETERS_MAGIC_V2 KeyBlobMagicNumber = 0x324d5044
	DSA_PUBLIC_MAGIC_V2     KeyBlobMagicNumber = 0x32425044
	DSA_PRIVATE_MAGIC_V2    KeyBlobMagicNumber = 0x32565044

	MLKEM_PUBLIC_MAGIC       KeyBlobMagicNumber = 0x504B4C4D
	MLKEM_PRIVATE_MAGIC      KeyBlobMagicNumber = 0x524B4C4D
	MLKEM_PRIVATE_SEED_MAGIC KeyBlobMagicNumber = 0x534B4C4D
)

type NTStatus

type NTStatus uint32

func (NTStatus) Errno

func (s NTStatus) Errno() syscall.Errno

func (NTStatus) Error

func (s NTStatus) Error() string

type PadMode

type PadMode uint32
const (
	PAD_UNDEFINED PadMode = 0x0
	PAD_NONE      PadMode = 0x1
	PAD_PKCS1     PadMode = 0x2
	PAD_OAEP      PadMode = 0x4
	PAD_PSS       PadMode = 0x8
)

type RSAKEY_BLOB

type RSAKEY_BLOB struct {
	Magic         KeyBlobMagicNumber
	BitLength     uint32
	PublicExpSize uint32
	ModulusSize   uint32
	Prime1Size    uint32
	Prime2Size    uint32
}

https://docs.microsoft.com/en-us/windows/win32/api/bcrypt/ns-bcrypt-bcrypt_rsakey_blob

type SECRET_HANDLE

type SECRET_HANDLE HANDLE

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL