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