1 module sspi.defines;
2 
3 version(Windows):
4 import core.sys.windows.ntsecpkg;
5 import core.sys.windows.sspi;
6 import core.sys.windows.security;
7 
8 
9 enum SecPkgFlag
10 {
11 	integrity = SECPKG_FLAG_INTEGRITY,
12 	privacy = SECPKG_FLAG_PRIVACY,
13 	tokenOnly = SECPKG_FLAG_TOKEN_ONLY,
14 	datagram = SECPKG_FLAG_DATAGRAM,
15 	connection = SECPKG_FLAG_CONNECTION,
16 	multiRequired = SECPKG_FLAG_MULTI_REQUIRED,
17 	clientOnly = SECPKG_FLAG_CLIENT_ONLY,
18 	extendedError = SECPKG_FLAG_EXTENDED_ERROR,
19 	impersonation = SECPKG_FLAG_IMPERSONATION,
20 	acceptWin32Name = SECPKG_FLAG_ACCEPT_WIN32_NAME,
21 	stream = SECPKG_FLAG_STREAM,
22 }
23 
24 
25 enum SecPackageAttribute
26 {
27 	authority = SECPKG_ATTR_AUTHORITY,
28 	connectionInfo = SECPKG_ATTR_CONNECTION_INFO,
29 	issuerList = SECPKG_ATTR_ISSUER_LIST,
30 	issuerListEx = SECPKG_ATTR_ISSUER_LIST_EX,
31 	keyInfo = SECPKG_ATTR_KEY_INFO,
32 	lifespan = SECPKG_ATTR_LIFESPAN,
33 	localCertContext = SECPKG_ATTR_LOCAL_CERT_CONTEXT,
34 	localCred = SECPKG_ATTR_LOCAL_CRED,
35 	names = SECPKG_ATTR_NAMES,
36 	protoInfo = SECPKG_ATTR_PROTO_INFO,
37 	remoteCertContext = SECPKG_ATTR_REMOTE_CERT_CONTEXT,
38 	remoteCred = SECPKG_ATTR_REMOTE_CRED,
39 	sizes = SECPKG_ATTR_SIZES,
40 	streamSizes = SECPKG_ATTR_STREAM_SIZES,
41 }
42 
43 struct SecPkgContext_NegotiationInfoW
44 {
45 	SecPkgInfoW*  packageInfo;
46 	ulong negotiationState;
47 }
48 
49 
50 enum SecurityStatus
51 {
52     okay = 0,
53 	// bufferTooSmall = SECURITY_STATUS.SEC_E_BUFFER_TOO_SMALL,
54 	// contextExpired = SECURITY_STATUS.SEC_E_CONTEXT_EXPIRED,
55     // SEC_E_CERT_EXPIRED = (-2146893016),
56 	// cryptoSystemInvalid = SECURITY_STATUS.SEC_E_CRYPTO_SYSTEM_INVALID,
57     insufficientMemory =(-2146893056),
58     invalidHandle = (-2146893055),
59     invalidToken = (-2146893048),
60 	qopNotSupported = (-2146893046),
61 	//outOfSequence = SECURITY_STATUS.SEC_E_OUT_OF_SEQUENCE,
62 	//messageAltered = SECURITY_STATUS.SEC_E_MESSAGE_ALTERED,
63     completeAndContinue = 590612,
64     completeNeeded = 590611,
65 }
66 /+
67 enum :SECURITY_STATUS{
68     SEC_E_OK = 0,
69     SEC_E_CERT_EXPIRED = (-2146893016),
70     SEC_E_INCOMPLETE_MESSAGE = (-2146893032),
71     SEC_E_INSUFFICIENT_MEMORY = (-2146893056),
72     SEC_E_INTERNAL_ERROR = (-2146893052),
73     SEC_E_INVALID_HANDLE = (-2146893055),
74     SEC_E_INVALID_TOKEN = (-2146893048),
75     SEC_E_LOGON_DENIED = (-2146893044),
76     SEC_E_NO_AUTHENTICATING_AUTHORITY = (-2146893039),
77     SEC_E_NO_CREDENTIALS = (-2146893042),
78     SEC_E_TARGET_UNKNOWN = (-2146893053),
79     SEC_E_UNSUPPORTED_FUNCTION = (-2146893054),
80     SEC_E_UNTRUSTED_ROOT = (-2146893019),
81     SEC_E_WRONG_PRINCIPAL = (-2146893022),
82     SEC_E_SECPKG_NOT_FOUND = (-2146893051),
83     SEC_E_QOP_NOT_SUPPORTED = (-2146893046),
84     SEC_E_UNKNOWN_CREDENTIALS = (-2146893043),
85     SEC_E_NOT_OWNER = (-2146893050),
86 }
87 enum :SECURITY_STATUS {
88     SEC_I_RENEGOTIATE = 590625,
89     SEC_I_COMPLETE_AND_CONTINUE = 590612,
90     SEC_I_COMPLETE_NEEDED = 590611,
91     SEC_I_CONTINUE_NEEDED = 590610,
92     SEC_I_INCOMPLETE_CREDENTIALS = 590624,
93 }
94 +/
95 
96 
97 enum IscReq
98 {
99 	delegate_ = ISC_REQ_DELEGATE,
100 	mutualAuth = ISC_REQ_MUTUAL_AUTH,
101 	replayDetect = ISC_REQ_REPLAY_DETECT,
102 	sequenceDetect = ISC_REQ_SEQUENCE_DETECT,
103 	confidentiality = ISC_REQ_CONFIDENTIALITY,
104 	useSessionKey = ISC_REQ_USE_SESSION_KEY,
105 	promptForCreds = ISC_REQ_PROMPT_FOR_CREDS,
106 	useSuppliedCreds = ISC_REQ_USE_SUPPLIED_CREDS,
107 	allocateMemory = ISC_REQ_ALLOCATE_MEMORY,
108 	useDceStyle = ISC_REQ_USE_DCE_STYLE,
109 	datagram = ISC_REQ_DATAGRAM,
110 	connection = ISC_REQ_CONNECTION,
111 	extendedError = ISC_REQ_EXTENDED_ERROR,
112 	stream = ISC_REQ_STREAM,
113 	integrity = ISC_REQ_INTEGRITY,
114 	manualCredValidation = ISC_REQ_MANUAL_CRED_VALIDATION,
115 	http = ISC_REQ_HTTP,
116 }
117