/* header auto-generated by pidl */

#ifndef _PIDL_HEADER_keycredlink
#define _PIDL_HEADER_keycredlink

#include <stdint.h>


#ifndef _HEADER_keycredlink
#define _HEADER_keycredlink

enum KEYCREDENTIALLINK_ENTRY_Identifier
#ifndef USE_UINT_ENUMS
 {
	KeyID=(int)(0x01),
	KeyHash=(int)(0x02),
	KeyMaterial=(int)(0x03),
	KeyUsage=(int)(0x04),
	KeySource=(int)(0x05),
	DeviceId=(int)(0x06),
	CustomKeyInformation=(int)(0x07),
	KeyApproximateLastLogonTimeStamp=(int)(0x08),
	KeyCreationTime=(int)(0x09)
}
#else
 { __do_not_use_enum_KEYCREDENTIALLINK_ENTRY_Identifier=INT_MAX}
#define KeyID ( 0x01 )
#define KeyHash ( 0x02 )
#define KeyMaterial ( 0x03 )
#define KeyUsage ( 0x04 )
#define KeySource ( 0x05 )
#define DeviceId ( 0x06 )
#define CustomKeyInformation ( 0x07 )
#define KeyApproximateLastLogonTimeStamp ( 0x08 )
#define KeyCreationTime ( 0x09 )
#endif
;

enum KEYCREDENTIALLINK_ENTRY_KeyUsage
#ifndef USE_UINT_ENUMS
 {
	KEY_USAGE_NGC=(int)(0x01),
	KEY_USAGE_FIDO=(int)(0x02),
	KEY_USAGE_FEK=(int)(0x03)
}
#else
 { __do_not_use_enum_KEYCREDENTIALLINK_ENTRY_KeyUsage=INT_MAX}
#define KEY_USAGE_NGC ( 0x01 )
#define KEY_USAGE_FIDO ( 0x02 )
#define KEY_USAGE_FEK ( 0x03 )
#endif
;

enum KEYCREDENTIALLINK_ENTRY_KeySource
#ifndef USE_UINT_ENUMS
 {
	KEY_SOURCE_AD=(int)(0x00)
}
#else
 { __do_not_use_enum_KEYCREDENTIALLINK_ENTRY_KeySource=INT_MAX}
#define KEY_SOURCE_AD ( 0x00 )
#endif
;

/* bitmap CUSTOM_KEY_INFO_Flags */
#define CUSTOM_KEY_INFO_FLAGS_ATTESTATION ( 0x01 )
#define CUSTOM_KEY_INFO_FLAGS_MFA_NOT_USED ( 0x02 )

enum CUSTOM_KEY_INFO_VolType
#ifndef USE_UINT_ENUMS
 {
	Unspecified=(int)(0x00),
	OSV=(int)(0x01),
	FDV=(int)(0x02),
	RDV=(int)(0x03)
}
#else
 { __do_not_use_enum_CUSTOM_KEY_INFO_VolType=INT_MAX}
#define Unspecified ( 0x00 )
#define OSV ( 0x01 )
#define FDV ( 0x02 )
#define RDV ( 0x03 )
#endif
;

enum CUSTOM_KEY_INFO_SupportsNotification
#ifndef USE_UINT_ENUMS
 {
	Unsupported=(int)(0x00),
	Supported=(int)(0x01)
}
#else
 { __do_not_use_enum_CUSTOM_KEY_INFO_SupportsNotification=INT_MAX}
#define Unsupported ( 0x00 )
#define Supported ( 0x01 )
#endif
;

enum CUSTOM_KEY_INFO_KeyStrength
#ifndef USE_UINT_ENUMS
 {
	Unknown=(int)(0x00),
	Weak=(int)(0x01),
	Normal=(int)(0x02)
}
#else
 { __do_not_use_enum_CUSTOM_KEY_INFO_KeyStrength=INT_MAX}
#define Unknown ( 0x00 )
#define Weak ( 0x01 )
#define Normal ( 0x02 )
#endif
;

struct EncodedExtendedCKI {
	uint8_t version;/* [value(0)] */
	uint8_t size;
	uint8_t *data;
}/* [flag(LIBNDR_FLAG_NOALIGN),public] */;

struct CUSTOM_KEY_INFORMATION {
	uint8_t version;/* [value] */
	uint8_t flags;
	uint8_t isExtended;
	enum CUSTOM_KEY_INFO_VolType volType;
	enum CUSTOM_KEY_INFO_SupportsNotification supportsNotification;
	uint8_t fekKeyVersion;/* [value] */
	enum CUSTOM_KEY_INFO_KeyStrength keyStrength;
	uint8_t reserved[10];
	uint32_t count;
	struct EncodedExtendedCKI *cki;
}/* [nopull,nopush] */;

union KEYCREDENTIALLINK_ENTRY_Value {
	uint8_t keyId[32];/* [case(KeyID)] */
	uint8_t keyHash[32];/* [case(KeyHash)] */
	enum KEYCREDENTIALLINK_ENTRY_KeyUsage keyUsage;/* [case(KeyUsage)] */
	enum KEYCREDENTIALLINK_ENTRY_KeySource keySource;/* [case(KeySource),value(KEY_SOURCE_AD)] */
	DATA_BLOB keyMaterial;/* [case(KeyMaterial),flag(LIBNDR_FLAG_REMAINING)] */
	uint8_t deviceId[16];/* [case(DeviceId)] */
	struct CUSTOM_KEY_INFORMATION customKeyInformation;/* [case(CustomKeyInformation)] */
	NTTIME lastLogon;/* [case(KeyApproximateLastLogonTimeStamp)] */
	NTTIME created;/* [case(KeyCreationTime)] */
}/* [flag(LIBNDR_FLAG_NOALIGN),gensize,nodiscriminant,nopull,public,switch_type(KEYCREDENTIALLINK_ENTRY_Identifier)] */;

struct KEYCREDENTIALLINK_ENTRY {
	uint16_t length;/* [value(ndr_size_KEYCREDENTIALLINK_ENTRY_Value(&value,identifier,ndr->flags))] */
	enum KEYCREDENTIALLINK_ENTRY_Identifier identifier;
	union KEYCREDENTIALLINK_ENTRY_Value value;/* [switch_is(identifier)] */
}/* [flag(LIBNDR_FLAG_NOALIGN),nopull,public] */;

struct KEYCREDENTIALLINK_BLOB {
	uint32_t version;/* [value(0x0200)] */
	uint32_t count;
	struct KEYCREDENTIALLINK_ENTRY *entries;
}/* [flag(LIBNDR_FLAG_NOALIGN),nopull,nopush,public] */;

struct KeyMaterialInternal {
	uint16_t bit_size;
	DATA_BLOB modulus;
	DATA_BLOB exponent;
}/* [nopull,nopush,public] */;

#endif /* _HEADER_keycredlink */
#endif /* _PIDL_HEADER_keycredlink */
