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
48 WINPR_ATTR_NODISCARD
49 FREERDP_API LONG smartcard_pack_write_size_align(wStream* s, size_t size, UINT32 alignment);
50
57 WINPR_ATTR_NODISCARD
58 FREERDP_API LONG smartcard_unpack_read_size_align(wStream* s, size_t size, UINT32 alignment);
59
64 WINPR_ATTR_NODISCARD
65 FREERDP_API SCARDCONTEXT smartcard_scard_context_native_from_redir(REDIR_SCARDCONTEXT* context);
66
71 FREERDP_API void smartcard_scard_context_native_to_redir(REDIR_SCARDCONTEXT* context,
72 SCARDCONTEXT hContext);
73
78 WINPR_ATTR_NODISCARD
79 FREERDP_API SCARDHANDLE smartcard_scard_handle_native_from_redir(REDIR_SCARDHANDLE* handle);
80
85 FREERDP_API void smartcard_scard_handle_native_to_redir(REDIR_SCARDHANDLE* handle,
86 SCARDHANDLE hCard);
87
92 WINPR_ATTR_NODISCARD
93 FREERDP_API LONG smartcard_unpack_common_type_header(wStream* s);
94
98 FREERDP_API void smartcard_pack_common_type_header(wStream* s);
99
104 WINPR_ATTR_NODISCARD
105 FREERDP_API LONG smartcard_unpack_private_type_header(wStream* s);
106
111 FREERDP_API void smartcard_pack_private_type_header(wStream* s, UINT32 objectBufferLength);
112
118 WINPR_ATTR_NODISCARD
119 FREERDP_API LONG smartcard_unpack_establish_context_call(wStream* s,
121
128 WINPR_ATTR_NODISCARD
129 FREERDP_API LONG smartcard_pack_establish_context_call(wStream* s,
130 const EstablishContext_Call* call);
131
137 WINPR_ATTR_NODISCARD
138 FREERDP_API LONG smartcard_pack_establish_context_return(wStream* s,
139 const EstablishContext_Return* ret);
140
147 WINPR_ATTR_NODISCARD
148 FREERDP_API LONG smartcard_unpack_establish_context_return(wStream* s,
150
157 WINPR_ATTR_NODISCARD
158 FREERDP_API LONG smartcard_unpack_context_call(wStream* s, Context_Call* call,
159 const char* name);
160
165 FREERDP_API void smartcard_trace_long_return(const Long_Return* ret, const char* name);
166
173 WINPR_ATTR_NODISCARD
174 FREERDP_API LONG smartcard_unpack_list_reader_groups_call(wStream* s,
176 BOOL unicode);
177
185 WINPR_ATTR_NODISCARD
186 FREERDP_API LONG smartcard_pack_list_reader_groups_call(wStream* s,
187 const ListReaderGroups_Call* call,
188 BOOL unicode);
189
197 WINPR_ATTR_NODISCARD
198 FREERDP_API LONG smartcard_pack_list_reader_groups_return(wStream* s,
199 const ListReaderGroups_Return* ret,
200 BOOL unicode);
201
209 WINPR_ATTR_NODISCARD
210 FREERDP_API LONG smartcard_unpack_list_reader_groups_return(wStream* s,
212 BOOL unicode);
213
220 WINPR_ATTR_NODISCARD
221 FREERDP_API LONG smartcard_unpack_list_readers_call(wStream* s, ListReaders_Call* call,
222 BOOL unicode);
223
231 WINPR_ATTR_NODISCARD
232 FREERDP_API LONG smartcard_pack_list_readers_return(wStream* s, const ListReaders_Return* ret,
233 BOOL unicode);
234
240 WINPR_ATTR_NODISCARD
241 FREERDP_API LONG
242 smartcard_unpack_context_and_two_strings_a_call(wStream* s, ContextAndTwoStringA_Call* call);
243
249 WINPR_ATTR_NODISCARD
250 FREERDP_API LONG
251 smartcard_unpack_context_and_two_strings_w_call(wStream* s, ContextAndTwoStringW_Call* call);
252
258 WINPR_ATTR_NODISCARD
259 FREERDP_API LONG smartcard_unpack_context_and_string_a_call(wStream* s,
261
267 WINPR_ATTR_NODISCARD
268 FREERDP_API LONG smartcard_unpack_context_and_string_w_call(wStream* s,
270
276 WINPR_ATTR_NODISCARD
277 FREERDP_API LONG smartcard_unpack_locate_cards_a_call(wStream* s, LocateCardsA_Call* call);
278
284 WINPR_ATTR_NODISCARD
285 FREERDP_API LONG smartcard_pack_locate_cards_return(wStream* s, const LocateCards_Return* ret);
286
292 WINPR_ATTR_NODISCARD
293 FREERDP_API LONG smartcard_unpack_locate_cards_w_call(wStream* s, LocateCardsW_Call* call);
294
300 WINPR_ATTR_NODISCARD
301 FREERDP_API LONG smartcard_pack_locate_cards_w_return(wStream* s,
302 const LocateCards_Return* ret);
303
309 WINPR_ATTR_NODISCARD
310 FREERDP_API LONG smartcard_unpack_connect_a_call(wStream* s, ConnectA_Call* call);
311
317 WINPR_ATTR_NODISCARD
318 FREERDP_API LONG smartcard_unpack_connect_w_call(wStream* s, ConnectW_Call* call);
319
325 WINPR_ATTR_NODISCARD
326 FREERDP_API LONG smartcard_pack_connect_return(wStream* s, const Connect_Return* ret);
327
334 WINPR_ATTR_NODISCARD
335 FREERDP_API LONG smartcard_unpack_connect_return(wStream* s, Connect_Return* ret);
336
343 WINPR_ATTR_NODISCARD
344 FREERDP_API LONG smartcard_pack_control_call(wStream* s, const Control_Call* call);
345
352 WINPR_ATTR_NODISCARD
353 FREERDP_API LONG smartcard_unpack_control_return(wStream* s, Control_Return* ret);
354
360 WINPR_ATTR_NODISCARD
361 FREERDP_API LONG smartcard_unpack_reconnect_call(wStream* s, Reconnect_Call* call);
362
369 WINPR_ATTR_NODISCARD
370 FREERDP_API LONG smartcard_pack_reconnect_call(wStream* s, const Reconnect_Call* call);
371
377 WINPR_ATTR_NODISCARD
378 FREERDP_API LONG smartcard_pack_reconnect_return(wStream* s, const Reconnect_Return* ret);
379
386 WINPR_ATTR_NODISCARD
387 FREERDP_API LONG smartcard_unpack_reconnect_return(wStream* s, Reconnect_Return* ret);
388
395 WINPR_ATTR_NODISCARD
396 FREERDP_API LONG smartcard_unpack_hcard_and_disposition_call(wStream* s,
398 const char* name);
399
405 WINPR_ATTR_NODISCARD
406 FREERDP_API LONG smartcard_unpack_get_status_change_a_call(wStream* s,
408
414 WINPR_ATTR_NODISCARD
415 FREERDP_API LONG smartcard_unpack_get_status_change_w_call(wStream* s,
417
425 WINPR_ATTR_NODISCARD
426 FREERDP_API LONG smartcard_pack_get_status_change_return(wStream* s,
427 const GetStatusChange_Return* ret,
428 BOOL unicode);
429
435 WINPR_ATTR_NODISCARD
436 FREERDP_API LONG smartcard_unpack_state_call(wStream* s, State_Call* call);
437
443 WINPR_ATTR_NODISCARD
444 FREERDP_API LONG smartcard_pack_state_return(wStream* s, const State_Return* ret);
445
452 WINPR_ATTR_NODISCARD
453 FREERDP_API LONG smartcard_unpack_status_call(wStream* s, Status_Call* call, BOOL unicode);
454
462 WINPR_ATTR_NODISCARD
463 FREERDP_API LONG smartcard_pack_status_call(wStream* s, const Status_Call* call, BOOL unicode);
464
472 WINPR_ATTR_NODISCARD
473 FREERDP_API LONG smartcard_pack_status_return(wStream* s, const Status_Return* ret,
474 BOOL unicode);
475
483 WINPR_ATTR_NODISCARD
484 FREERDP_API LONG smartcard_unpack_status_return(wStream* s, Status_Return* ret, BOOL unicode);
485
491 WINPR_ATTR_NODISCARD
492 FREERDP_API LONG smartcard_unpack_get_attrib_call(wStream* s, GetAttrib_Call* call);
493
500 WINPR_ATTR_NODISCARD
501 FREERDP_API LONG smartcard_pack_get_attrib_call(wStream* s, const GetAttrib_Call* call);
502
511 WINPR_ATTR_NODISCARD
512 FREERDP_API LONG smartcard_pack_get_attrib_return(wStream* s, const GetAttrib_Return* ret,
513 DWORD dwAttrId, DWORD cbAttrCallLen);
514
521 WINPR_ATTR_NODISCARD
522 FREERDP_API LONG smartcard_unpack_get_attrib_return(wStream* s, GetAttrib_Return* ret);
523
529 WINPR_ATTR_NODISCARD
530 FREERDP_API LONG smartcard_unpack_set_attrib_call(wStream* s, SetAttrib_Call* call);
531
538 WINPR_ATTR_NODISCARD
539 FREERDP_API LONG smartcard_pack_set_attrib_call(wStream* s, const SetAttrib_Call* call);
540
546 WINPR_ATTR_NODISCARD
547 FREERDP_API LONG smartcard_unpack_control_call(wStream* s, Control_Call* call);
548
554 WINPR_ATTR_NODISCARD
555 FREERDP_API LONG smartcard_pack_control_return(wStream* s, const Control_Return* ret);
556
562 WINPR_ATTR_NODISCARD
563 FREERDP_API LONG smartcard_unpack_transmit_call(wStream* s, Transmit_Call* call);
564
570 WINPR_ATTR_NODISCARD
571 FREERDP_API LONG smartcard_pack_transmit_return(wStream* s, const Transmit_Return* ret);
572
579 WINPR_ATTR_NODISCARD
580 FREERDP_API LONG smartcard_unpack_transmit_return(wStream* s, Transmit_Return* ret);
581
587 WINPR_ATTR_NODISCARD
588 FREERDP_API LONG smartcard_unpack_locate_cards_by_atr_a_call(wStream* s,
590
596 WINPR_ATTR_NODISCARD
597 FREERDP_API LONG smartcard_unpack_locate_cards_by_atr_w_call(wStream* s,
599
605 WINPR_ATTR_NODISCARD
606 FREERDP_API LONG smartcard_unpack_read_cache_a_call(wStream* s, ReadCacheA_Call* call);
607
613 WINPR_ATTR_NODISCARD
614 FREERDP_API LONG smartcard_unpack_read_cache_w_call(wStream* s, ReadCacheW_Call* call);
615
621 WINPR_ATTR_NODISCARD
622 FREERDP_API LONG smartcard_pack_read_cache_return(wStream* s, const ReadCache_Return* ret);
623
629 WINPR_ATTR_NODISCARD
630 FREERDP_API LONG smartcard_unpack_write_cache_a_call(wStream* s, WriteCacheA_Call* call);
631
637 WINPR_ATTR_NODISCARD
638 FREERDP_API LONG smartcard_unpack_write_cache_w_call(wStream* s, WriteCacheW_Call* call);
639
645 WINPR_ATTR_NODISCARD
646 FREERDP_API LONG smartcard_unpack_get_transmit_count_call(wStream* s,
648
654 WINPR_ATTR_NODISCARD
655 FREERDP_API LONG smartcard_pack_get_transmit_count_return(wStream* s,
656 const GetTransmitCount_Return* ret);
657
663 WINPR_ATTR_NODISCARD
664 FREERDP_API LONG smartcard_unpack_get_reader_icon_call(wStream* s, GetReaderIcon_Call* call);
665
671 WINPR_ATTR_NODISCARD
672 FREERDP_API LONG smartcard_pack_get_reader_icon_return(wStream* s,
673 const GetReaderIcon_Return* ret);
674
680 WINPR_ATTR_NODISCARD
681 FREERDP_API LONG smartcard_unpack_get_device_type_id_call(wStream* s,
683
689 WINPR_ATTR_NODISCARD
690 FREERDP_API LONG smartcard_pack_device_type_id_return(wStream* s,
691 const GetDeviceTypeId_Return* ret);
692
700 WINPR_ATTR_NODISCARD
701 FREERDP_API LONG smartcard_pack_context_call(wStream* s, const Context_Call* call,
702 const char* name);
703
711 WINPR_ATTR_NODISCARD
712 FREERDP_API LONG smartcard_pack_list_readers_call(wStream* s, const ListReaders_Call* call,
713 BOOL unicode);
714
721 WINPR_ATTR_NODISCARD
722 FREERDP_API LONG smartcard_pack_get_status_change_a_call(wStream* s,
723 const GetStatusChangeA_Call* call);
724
731 WINPR_ATTR_NODISCARD
732 FREERDP_API LONG smartcard_pack_get_status_change_w_call(wStream* s,
733 const GetStatusChangeW_Call* call);
734
741 WINPR_ATTR_NODISCARD
742 FREERDP_API LONG smartcard_pack_connect_a_call(wStream* s, const ConnectA_Call* call);
743
750 WINPR_ATTR_NODISCARD
751 FREERDP_API LONG smartcard_pack_connect_w_call(wStream* s, const ConnectW_Call* call);
752
760 WINPR_ATTR_NODISCARD
761 FREERDP_API LONG smartcard_pack_hcard_and_disposition_call(wStream* s,
762 const HCardAndDisposition_Call* call,
763 const char* name);
764
771 WINPR_ATTR_NODISCARD
772 FREERDP_API LONG smartcard_pack_transmit_call(wStream* s, const Transmit_Call* call);
773
781 WINPR_ATTR_NODISCARD
782 FREERDP_API LONG smartcard_unpack_list_readers_return(wStream* s, ListReaders_Return* ret,
783 BOOL unicode);
784
792 WINPR_ATTR_NODISCARD
793 FREERDP_API LONG smartcard_unpack_get_status_change_return(wStream* s,
795 BOOL unicode);
796
797#ifdef __cplusplus
798}
799#endif
800
801#endif /* FREERDP_CHANNEL_SMARTCARD_CLIENT_PACK_H */