FreeRDP
Loading...
Searching...
No Matches
nla.h
1
20#ifndef FREERDP_LIB_CORE_NLA_H
21#define FREERDP_LIB_CORE_NLA_H
22
23typedef struct rdp_nla rdpNla;
24
25#include <freerdp/api.h>
26#include <freerdp/freerdp.h>
27
28#include <winpr/sspi.h>
29#include <winpr/stream.h>
30#include <winpr/crypto.h>
31
32#include <freerdp/crypto/ber.h>
33#include <freerdp/crypto/der.h>
34#include <freerdp/crypto/crypto.h>
35
36#include "transport.h"
37
38typedef enum
39{
40 NLA_STATE_INITIAL,
41 NLA_STATE_NEGO_TOKEN,
42 NLA_STATE_PUB_KEY_AUTH,
43 NLA_STATE_EARLY_USER_AUTH,
44 NLA_STATE_AUTH_INFO,
45 NLA_STATE_POST_NEGO,
46 NLA_STATE_FINAL
47} NLA_STATE;
48
49WINPR_ATTR_NODISCARD
50FREERDP_LOCAL int nla_authenticate(rdpNla* nla);
51
52WINPR_ATTR_NODISCARD
53FREERDP_LOCAL int nla_client_begin(rdpNla* nla);
54
55WINPR_ATTR_NODISCARD
56FREERDP_LOCAL int nla_recv_pdu(rdpNla* nla, wStream* s);
57
58WINPR_ATTR_NODISCARD
59FREERDP_LOCAL SEC_WINNT_AUTH_IDENTITY* nla_get_identity(rdpNla* nla);
60
61WINPR_ATTR_NODISCARD
62FREERDP_LOCAL NLA_STATE nla_get_state(const rdpNla* nla);
63
64FREERDP_LOCAL BOOL nla_set_state(rdpNla* nla, NLA_STATE state);
65
66WINPR_ATTR_NODISCARD
67FREERDP_LOCAL const char* nla_get_state_str(NLA_STATE state);
68
69WINPR_ATTR_NODISCARD
70FREERDP_LOCAL DWORD nla_get_error(const rdpNla* nla);
71
72WINPR_ATTR_NODISCARD
73FREERDP_LOCAL INT32 nla_get_sspi_error(const rdpNla* nla);
74
75WINPR_ATTR_NODISCARD
76FREERDP_LOCAL BOOL nla_set_service_principal(rdpNla* nla, const char* service,
77 const char* hostname);
78
79WINPR_ATTR_NODISCARD
80FREERDP_LOCAL BOOL nla_set_sspi_module(rdpNla* nla, const char* sspiModule);
81
82WINPR_ATTR_NODISCARD
83FREERDP_LOCAL BOOL nla_sspi_module_init(rdpNla* nla);
84
85WINPR_ATTR_NODISCARD
86FREERDP_LOCAL BOOL nla_impersonate(rdpNla* nla);
87
88WINPR_ATTR_NODISCARD
89FREERDP_LOCAL BOOL nla_revert_to_self(rdpNla* nla);
90
91FREERDP_LOCAL void nla_free(rdpNla* nla);
92
93WINPR_ATTR_MALLOC(nla_free, 1)
94WINPR_ATTR_NODISCARD
95FREERDP_LOCAL rdpNla* nla_new(rdpContext* context, rdpTransport* transport);
96
97FREERDP_LOCAL void nla_set_early_user_auth(rdpNla* nla, BOOL earlyUserAuth);
98
99WINPR_ATTR_NODISCARD
100FREERDP_LOCAL BOOL nla_encrypt(rdpNla* nla, const SecBuffer* inBuffer, SecBuffer* outBuffer);
101
102WINPR_ATTR_NODISCARD
103FREERDP_LOCAL BOOL nla_decrypt(rdpNla* nla, const SecBuffer* inBuffer, SecBuffer* outBuffer);
104
105WINPR_ATTR_NODISCARD
106FREERDP_LOCAL SECURITY_STATUS nla_QueryContextAttributes(rdpNla* nla, DWORD ulAttr, PVOID pBuffer);
107
108WINPR_ATTR_NODISCARD
109FREERDP_LOCAL SECURITY_STATUS nla_FreeContextBuffer(rdpNla* nla, PVOID pBuffer);
110
111#endif /* FREERDP_LIB_CORE_NLA_H */