FreeRDP
Loading...
Searching...
No Matches
include/freerdp/utils/smartcard_pack.h
1
24#ifndef FREERDP_CHANNEL_SMARTCARD_CLIENT_PACK_H
25#define FREERDP_CHANNEL_SMARTCARD_CLIENT_PACK_H
26
27#include <winpr/crt.h>
28#include <winpr/stream.h>
29#include <winpr/smartcard.h>
30
31#include <freerdp/api.h>
32#include <freerdp/channels/scard.h>
33
34#define SMARTCARD_COMMON_TYPE_HEADER_LENGTH 8
35#define SMARTCARD_PRIVATE_TYPE_HEADER_LENGTH 8
36
37#ifdef __cplusplus
38extern "C"
39{
40#endif
41
42 WINPR_ATTR_NODISCARD
43 FREERDP_API LONG smartcard_pack_write_size_align(wStream* s, size_t size, UINT32 alignment);
44
45 WINPR_ATTR_NODISCARD
46 FREERDP_API LONG smartcard_unpack_read_size_align(wStream* s, size_t size, UINT32 alignment);
47
48 WINPR_ATTR_NODISCARD
49 FREERDP_API SCARDCONTEXT smartcard_scard_context_native_from_redir(REDIR_SCARDCONTEXT* context);
50 FREERDP_API void smartcard_scard_context_native_to_redir(REDIR_SCARDCONTEXT* context,
51 SCARDCONTEXT hContext);
52
53 WINPR_ATTR_NODISCARD
54 FREERDP_API SCARDHANDLE smartcard_scard_handle_native_from_redir(REDIR_SCARDHANDLE* handle);
55 FREERDP_API void smartcard_scard_handle_native_to_redir(REDIR_SCARDHANDLE* handle,
56 SCARDHANDLE hCard);
57
58 WINPR_ATTR_NODISCARD
59 FREERDP_API LONG smartcard_unpack_common_type_header(wStream* s);
60 FREERDP_API void smartcard_pack_common_type_header(wStream* s);
61
62 WINPR_ATTR_NODISCARD
63 FREERDP_API LONG smartcard_unpack_private_type_header(wStream* s);
64 FREERDP_API void smartcard_pack_private_type_header(wStream* s, UINT32 objectBufferLength);
65
66 WINPR_ATTR_NODISCARD
67 FREERDP_API LONG smartcard_unpack_establish_context_call(wStream* s,
69
70 WINPR_ATTR_NODISCARD
71 FREERDP_API LONG smartcard_pack_establish_context_return(wStream* s,
72 const EstablishContext_Return* ret);
73
74 WINPR_ATTR_NODISCARD
75 FREERDP_API LONG smartcard_unpack_context_call(wStream* s, Context_Call* call,
76 const char* name);
77
78 FREERDP_API void smartcard_trace_long_return(const Long_Return* ret, const char* name);
79
80 WINPR_ATTR_NODISCARD
81 FREERDP_API LONG smartcard_unpack_list_reader_groups_call(wStream* s,
83 BOOL unicode);
84
85 WINPR_ATTR_NODISCARD
86 FREERDP_API LONG smartcard_pack_list_reader_groups_return(wStream* s,
87 const ListReaderGroups_Return* ret,
88 BOOL unicode);
89
90 WINPR_ATTR_NODISCARD
91 FREERDP_API LONG smartcard_unpack_list_readers_call(wStream* s, ListReaders_Call* call,
92 BOOL unicode);
93
94 WINPR_ATTR_NODISCARD
95 FREERDP_API LONG smartcard_pack_list_readers_return(wStream* s, const ListReaders_Return* ret,
96 BOOL unicode);
97
98 WINPR_ATTR_NODISCARD
99 FREERDP_API LONG
100 smartcard_unpack_context_and_two_strings_a_call(wStream* s, ContextAndTwoStringA_Call* call);
101
102 WINPR_ATTR_NODISCARD
103 FREERDP_API LONG
104 smartcard_unpack_context_and_two_strings_w_call(wStream* s, ContextAndTwoStringW_Call* call);
105
106 WINPR_ATTR_NODISCARD
107 FREERDP_API LONG smartcard_unpack_context_and_string_a_call(wStream* s,
109
110 WINPR_ATTR_NODISCARD
111 FREERDP_API LONG smartcard_unpack_context_and_string_w_call(wStream* s,
113
114 WINPR_ATTR_NODISCARD
115 FREERDP_API LONG smartcard_unpack_locate_cards_a_call(wStream* s, LocateCardsA_Call* call);
116
117 WINPR_ATTR_NODISCARD
118 FREERDP_API LONG smartcard_pack_locate_cards_return(wStream* s, const LocateCards_Return* ret);
119
120 WINPR_ATTR_NODISCARD
121 FREERDP_API LONG smartcard_unpack_locate_cards_w_call(wStream* s, LocateCardsW_Call* call);
122
123 WINPR_ATTR_NODISCARD
124 FREERDP_API LONG smartcard_pack_locate_cards_w_return(wStream* s, const LocateCardsW_Call* ret);
125
126 WINPR_ATTR_NODISCARD
127 FREERDP_API LONG smartcard_unpack_connect_a_call(wStream* s, ConnectA_Call* call);
128
129 WINPR_ATTR_NODISCARD
130 FREERDP_API LONG smartcard_unpack_connect_w_call(wStream* s, ConnectW_Call* call);
131
132 WINPR_ATTR_NODISCARD
133 FREERDP_API LONG smartcard_pack_connect_return(wStream* s, const Connect_Return* ret);
134
135 WINPR_ATTR_NODISCARD
136 FREERDP_API LONG smartcard_unpack_reconnect_call(wStream* s, Reconnect_Call* call);
137
138 WINPR_ATTR_NODISCARD
139 FREERDP_API LONG smartcard_pack_reconnect_return(wStream* s, const Reconnect_Return* ret);
140
141 WINPR_ATTR_NODISCARD
142 FREERDP_API LONG smartcard_unpack_hcard_and_disposition_call(wStream* s,
144 const char* name);
145
146 WINPR_ATTR_NODISCARD
147 FREERDP_API LONG smartcard_unpack_get_status_change_a_call(wStream* s,
149
150 WINPR_ATTR_NODISCARD
151 FREERDP_API LONG smartcard_unpack_get_status_change_w_call(wStream* s,
153
154 WINPR_ATTR_NODISCARD
155 FREERDP_API LONG smartcard_pack_get_status_change_return(wStream* s,
156 const GetStatusChange_Return* ret,
157 BOOL unicode);
158
159 WINPR_ATTR_NODISCARD
160 FREERDP_API LONG smartcard_unpack_state_call(wStream* s, State_Call* call);
161 WINPR_ATTR_NODISCARD
162 FREERDP_API LONG smartcard_pack_state_return(wStream* s, const State_Return* ret);
163
164 WINPR_ATTR_NODISCARD
165 FREERDP_API LONG smartcard_unpack_status_call(wStream* s, Status_Call* call, BOOL unicode);
166
167 WINPR_ATTR_NODISCARD
168 FREERDP_API LONG smartcard_pack_status_return(wStream* s, const Status_Return* ret,
169 BOOL unicode);
170
171 WINPR_ATTR_NODISCARD
172 FREERDP_API LONG smartcard_unpack_get_attrib_call(wStream* s, GetAttrib_Call* call);
173
174 WINPR_ATTR_NODISCARD
175 FREERDP_API LONG smartcard_pack_get_attrib_return(wStream* s, const GetAttrib_Return* ret,
176 DWORD dwAttrId, DWORD cbAttrCallLen);
177
178 WINPR_ATTR_NODISCARD
179 FREERDP_API LONG smartcard_unpack_set_attrib_call(wStream* s, SetAttrib_Call* call);
180
181 WINPR_ATTR_NODISCARD
182 FREERDP_API LONG smartcard_unpack_control_call(wStream* s, Control_Call* call);
183
184 WINPR_ATTR_NODISCARD
185 FREERDP_API LONG smartcard_pack_control_return(wStream* s, const Control_Return* ret);
186
187 WINPR_ATTR_NODISCARD
188 FREERDP_API LONG smartcard_unpack_transmit_call(wStream* s, Transmit_Call* call);
189
190 WINPR_ATTR_NODISCARD
191 FREERDP_API LONG smartcard_pack_transmit_return(wStream* s, const Transmit_Return* ret);
192
193 WINPR_ATTR_NODISCARD
194 FREERDP_API LONG smartcard_unpack_locate_cards_by_atr_a_call(wStream* s,
196
197 WINPR_ATTR_NODISCARD
198 FREERDP_API LONG smartcard_unpack_locate_cards_by_atr_w_call(wStream* s,
200
201 WINPR_ATTR_NODISCARD
202 FREERDP_API LONG smartcard_unpack_read_cache_a_call(wStream* s, ReadCacheA_Call* call);
203
204 WINPR_ATTR_NODISCARD
205 FREERDP_API LONG smartcard_unpack_read_cache_w_call(wStream* s, ReadCacheW_Call* call);
206
207 WINPR_ATTR_NODISCARD
208 FREERDP_API LONG smartcard_pack_read_cache_return(wStream* s, const ReadCache_Return* ret);
209
210 WINPR_ATTR_NODISCARD
211 FREERDP_API LONG smartcard_unpack_write_cache_a_call(wStream* s, WriteCacheA_Call* call);
212
213 WINPR_ATTR_NODISCARD
214 FREERDP_API LONG smartcard_unpack_write_cache_w_call(wStream* s, WriteCacheW_Call* call);
215
216 WINPR_ATTR_NODISCARD
217 FREERDP_API LONG smartcard_unpack_get_transmit_count_call(wStream* s,
219 WINPR_ATTR_NODISCARD
220 FREERDP_API LONG smartcard_pack_get_transmit_count_return(wStream* s,
221 const GetTransmitCount_Return* call);
222
223 WINPR_ATTR_NODISCARD
224 FREERDP_API LONG smartcard_unpack_get_reader_icon_call(wStream* s, GetReaderIcon_Call* call);
225 WINPR_ATTR_NODISCARD
226 FREERDP_API LONG smartcard_pack_get_reader_icon_return(wStream* s,
227 const GetReaderIcon_Return* ret);
228
229 WINPR_ATTR_NODISCARD
230 FREERDP_API LONG smartcard_unpack_get_device_type_id_call(wStream* s,
232
233 WINPR_ATTR_NODISCARD
234 FREERDP_API LONG smartcard_pack_device_type_id_return(wStream* s,
235 const GetDeviceTypeId_Return* ret);
236
237#ifdef __cplusplus
238}
239#endif
240
241#endif /* FREERDP_CHANNEL_SMARTCARD_CLIENT_PACK_H */