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
66 smartcard_scard_context_native_from_redir(const REDIR_SCARDCONTEXT* context);
67
72 FREERDP_API void smartcard_scard_context_native_to_redir(REDIR_SCARDCONTEXT* context,
73 SCARDCONTEXT hContext);
74
79 WINPR_ATTR_NODISCARD
80 FREERDP_API SCARDHANDLE
81 smartcard_scard_handle_native_from_redir(const REDIR_SCARDHANDLE* handle);
82
87 FREERDP_API void smartcard_scard_handle_native_to_redir(REDIR_SCARDHANDLE* handle,
88 SCARDHANDLE hCard);
89
94 WINPR_ATTR_NODISCARD
95 FREERDP_API LONG smartcard_unpack_common_type_header(wStream* s);
96
100 FREERDP_API void smartcard_pack_common_type_header(wStream* s);
101
106 WINPR_ATTR_NODISCARD
107 FREERDP_API LONG smartcard_unpack_private_type_header(wStream* s);
108
113 FREERDP_API void smartcard_pack_private_type_header(wStream* s, UINT32 objectBufferLength);
114
120 WINPR_ATTR_NODISCARD
121 FREERDP_API LONG smartcard_unpack_establish_context_call(wStream* s,
123
130 WINPR_ATTR_NODISCARD
131 FREERDP_API LONG smartcard_pack_establish_context_call(wStream* s,
132 const EstablishContext_Call* call);
133
139 WINPR_ATTR_NODISCARD
140 FREERDP_API LONG smartcard_pack_establish_context_return(wStream* s,
141 const EstablishContext_Return* ret);
142
149 WINPR_ATTR_NODISCARD
150 FREERDP_API LONG smartcard_unpack_establish_context_return(wStream* s,
152
159 WINPR_ATTR_NODISCARD
160 FREERDP_API LONG smartcard_unpack_context_call(wStream* s, Context_Call* call,
161 const char* name);
162
167 FREERDP_API void smartcard_trace_long_return(const Long_Return* ret, const char* name);
168
175 WINPR_ATTR_NODISCARD
176 FREERDP_API LONG smartcard_unpack_list_reader_groups_call(wStream* s,
178 BOOL unicode);
179
187 WINPR_ATTR_NODISCARD
188 FREERDP_API LONG smartcard_pack_list_reader_groups_call(wStream* s,
189 const ListReaderGroups_Call* call,
190 BOOL unicode);
191
199 WINPR_ATTR_NODISCARD
200 FREERDP_API LONG smartcard_pack_list_reader_groups_return(wStream* s,
201 const ListReaderGroups_Return* ret,
202 BOOL unicode);
203
211 WINPR_ATTR_NODISCARD
212 FREERDP_API LONG smartcard_unpack_list_reader_groups_return(wStream* s,
214 BOOL unicode);
215
222 WINPR_ATTR_NODISCARD
223 FREERDP_API LONG smartcard_unpack_list_readers_call(wStream* s, ListReaders_Call* call,
224 BOOL unicode);
225
233 WINPR_ATTR_NODISCARD
234 FREERDP_API LONG smartcard_pack_list_readers_return(wStream* s, const ListReaders_Return* ret,
235 BOOL unicode);
236
242 WINPR_ATTR_NODISCARD
243 FREERDP_API LONG
244 smartcard_unpack_context_and_two_strings_a_call(wStream* s, ContextAndTwoStringA_Call* call);
245
251 WINPR_ATTR_NODISCARD
252 FREERDP_API LONG
253 smartcard_unpack_context_and_two_strings_w_call(wStream* s, ContextAndTwoStringW_Call* call);
254
260 WINPR_ATTR_NODISCARD
261 FREERDP_API LONG smartcard_unpack_context_and_string_a_call(wStream* s,
263
269 WINPR_ATTR_NODISCARD
270 FREERDP_API LONG smartcard_unpack_context_and_string_w_call(wStream* s,
272
278 WINPR_ATTR_NODISCARD
279 FREERDP_API LONG smartcard_unpack_locate_cards_a_call(wStream* s, LocateCardsA_Call* call);
280
286 WINPR_ATTR_NODISCARD
287 FREERDP_API LONG smartcard_pack_locate_cards_return(wStream* s, const LocateCards_Return* ret);
288
294 WINPR_ATTR_NODISCARD
295 FREERDP_API LONG smartcard_unpack_locate_cards_w_call(wStream* s, LocateCardsW_Call* call);
296
302 WINPR_ATTR_NODISCARD
303 FREERDP_API LONG smartcard_pack_locate_cards_w_return(wStream* s,
304 const LocateCards_Return* ret);
305
311 WINPR_ATTR_NODISCARD
312 FREERDP_API LONG smartcard_unpack_connect_a_call(wStream* s, ConnectA_Call* call);
313
319 WINPR_ATTR_NODISCARD
320 FREERDP_API LONG smartcard_unpack_connect_w_call(wStream* s, ConnectW_Call* call);
321
327 WINPR_ATTR_NODISCARD
328 FREERDP_API LONG smartcard_pack_connect_return(wStream* s, const Connect_Return* ret);
329
336 WINPR_ATTR_NODISCARD
337 FREERDP_API LONG smartcard_unpack_connect_return(wStream* s, Connect_Return* ret);
338
345 WINPR_ATTR_NODISCARD
346 FREERDP_API LONG smartcard_pack_control_call(wStream* s, const Control_Call* call);
347
354 WINPR_ATTR_NODISCARD
355 FREERDP_API LONG smartcard_unpack_control_return(wStream* s, Control_Return* ret);
356
362 WINPR_ATTR_NODISCARD
363 FREERDP_API LONG smartcard_unpack_reconnect_call(wStream* s, Reconnect_Call* call);
364
371 WINPR_ATTR_NODISCARD
372 FREERDP_API LONG smartcard_pack_reconnect_call(wStream* s, const Reconnect_Call* call);
373
379 WINPR_ATTR_NODISCARD
380 FREERDP_API LONG smartcard_pack_reconnect_return(wStream* s, const Reconnect_Return* ret);
381
388 WINPR_ATTR_NODISCARD
389 FREERDP_API LONG smartcard_unpack_reconnect_return(wStream* s, Reconnect_Return* ret);
390
397 WINPR_ATTR_NODISCARD
398 FREERDP_API LONG smartcard_unpack_hcard_and_disposition_call(wStream* s,
400 const char* name);
401
407 WINPR_ATTR_NODISCARD
408 FREERDP_API LONG smartcard_unpack_get_status_change_a_call(wStream* s,
410
416 WINPR_ATTR_NODISCARD
417 FREERDP_API LONG smartcard_unpack_get_status_change_w_call(wStream* s,
419
427 WINPR_ATTR_NODISCARD
428 FREERDP_API LONG smartcard_pack_get_status_change_return(wStream* s,
429 const GetStatusChange_Return* ret,
430 BOOL unicode);
431
437 WINPR_ATTR_NODISCARD
438 FREERDP_API LONG smartcard_unpack_state_call(wStream* s, State_Call* call);
439
445 WINPR_ATTR_NODISCARD
446 FREERDP_API LONG smartcard_pack_state_return(wStream* s, const State_Return* ret);
447
454 WINPR_ATTR_NODISCARD
455 FREERDP_API LONG smartcard_unpack_status_call(wStream* s, Status_Call* call, BOOL unicode);
456
464 WINPR_ATTR_NODISCARD
465 FREERDP_API LONG smartcard_pack_status_call(wStream* s, const Status_Call* call, BOOL unicode);
466
474 WINPR_ATTR_NODISCARD
475 FREERDP_API LONG smartcard_pack_status_return(wStream* s, const Status_Return* ret,
476 BOOL unicode);
477
485 WINPR_ATTR_NODISCARD
486 FREERDP_API LONG smartcard_unpack_status_return(wStream* s, Status_Return* ret, BOOL unicode);
487
493 WINPR_ATTR_NODISCARD
494 FREERDP_API LONG smartcard_unpack_get_attrib_call(wStream* s, GetAttrib_Call* call);
495
502 WINPR_ATTR_NODISCARD
503 FREERDP_API LONG smartcard_pack_get_attrib_call(wStream* s, const GetAttrib_Call* call);
504
513 WINPR_ATTR_NODISCARD
514 FREERDP_API LONG smartcard_pack_get_attrib_return(wStream* s, const GetAttrib_Return* ret,
515 DWORD dwAttrId, DWORD cbAttrCallLen);
516
523 WINPR_ATTR_NODISCARD
524 FREERDP_API LONG smartcard_unpack_get_attrib_return(wStream* s, GetAttrib_Return* ret);
525
531 WINPR_ATTR_NODISCARD
532 FREERDP_API LONG smartcard_unpack_set_attrib_call(wStream* s, SetAttrib_Call* call);
533
540 WINPR_ATTR_NODISCARD
541 FREERDP_API LONG smartcard_pack_set_attrib_call(wStream* s, const SetAttrib_Call* call);
542
548 WINPR_ATTR_NODISCARD
549 FREERDP_API LONG smartcard_unpack_control_call(wStream* s, Control_Call* call);
550
556 WINPR_ATTR_NODISCARD
557 FREERDP_API LONG smartcard_pack_control_return(wStream* s, const Control_Return* ret);
558
564 WINPR_ATTR_NODISCARD
565 FREERDP_API LONG smartcard_unpack_transmit_call(wStream* s, Transmit_Call* call);
566
572 WINPR_ATTR_NODISCARD
573 FREERDP_API LONG smartcard_pack_transmit_return(wStream* s, const Transmit_Return* ret);
574
581 WINPR_ATTR_NODISCARD
582 FREERDP_API LONG smartcard_unpack_transmit_return(wStream* s, Transmit_Return* ret);
583
589 WINPR_ATTR_NODISCARD
590 FREERDP_API LONG smartcard_unpack_locate_cards_by_atr_a_call(wStream* s,
592
598 WINPR_ATTR_NODISCARD
599 FREERDP_API LONG smartcard_unpack_locate_cards_by_atr_w_call(wStream* s,
601
607 WINPR_ATTR_NODISCARD
608 FREERDP_API LONG smartcard_unpack_read_cache_a_call(wStream* s, ReadCacheA_Call* call);
609
615 WINPR_ATTR_NODISCARD
616 FREERDP_API LONG smartcard_unpack_read_cache_w_call(wStream* s, ReadCacheW_Call* call);
617
623 WINPR_ATTR_NODISCARD
624 FREERDP_API LONG smartcard_pack_read_cache_return(wStream* s, const ReadCache_Return* ret);
625
631 WINPR_ATTR_NODISCARD
632 FREERDP_API LONG smartcard_unpack_write_cache_a_call(wStream* s, WriteCacheA_Call* call);
633
639 WINPR_ATTR_NODISCARD
640 FREERDP_API LONG smartcard_unpack_write_cache_w_call(wStream* s, WriteCacheW_Call* call);
641
647 WINPR_ATTR_NODISCARD
648 FREERDP_API LONG smartcard_unpack_get_transmit_count_call(wStream* s,
650
656 WINPR_ATTR_NODISCARD
657 FREERDP_API LONG smartcard_pack_get_transmit_count_return(wStream* s,
658 const GetTransmitCount_Return* ret);
659
665 WINPR_ATTR_NODISCARD
666 FREERDP_API LONG smartcard_unpack_get_reader_icon_call(wStream* s, GetReaderIcon_Call* call);
667
673 WINPR_ATTR_NODISCARD
674 FREERDP_API LONG smartcard_pack_get_reader_icon_return(wStream* s,
675 const GetReaderIcon_Return* ret);
676
682 WINPR_ATTR_NODISCARD
683 FREERDP_API LONG smartcard_unpack_get_device_type_id_call(wStream* s,
685
691 WINPR_ATTR_NODISCARD
692 FREERDP_API LONG smartcard_pack_device_type_id_return(wStream* s,
693 const GetDeviceTypeId_Return* ret);
694
702 WINPR_ATTR_NODISCARD
703 FREERDP_API LONG smartcard_pack_context_call(wStream* s, const Context_Call* call,
704 const char* name);
705
713 WINPR_ATTR_NODISCARD
714 FREERDP_API LONG smartcard_pack_list_readers_call(wStream* s, const ListReaders_Call* call,
715 BOOL unicode);
716
723 WINPR_ATTR_NODISCARD
724 FREERDP_API LONG smartcard_pack_get_status_change_a_call(wStream* s,
725 const GetStatusChangeA_Call* call);
726
733 WINPR_ATTR_NODISCARD
734 FREERDP_API LONG smartcard_pack_get_status_change_w_call(wStream* s,
735 const GetStatusChangeW_Call* call);
736
743 WINPR_ATTR_NODISCARD
744 FREERDP_API LONG smartcard_pack_connect_a_call(wStream* s, const ConnectA_Call* call);
745
752 WINPR_ATTR_NODISCARD
753 FREERDP_API LONG smartcard_pack_connect_w_call(wStream* s, const ConnectW_Call* call);
754
762 WINPR_ATTR_NODISCARD
763 FREERDP_API LONG smartcard_pack_hcard_and_disposition_call(wStream* s,
764 const HCardAndDisposition_Call* call,
765 const char* name);
766
773 WINPR_ATTR_NODISCARD
774 FREERDP_API LONG smartcard_pack_transmit_call(wStream* s, const Transmit_Call* call);
775
783 WINPR_ATTR_NODISCARD
784 FREERDP_API LONG smartcard_unpack_list_readers_return(wStream* s, ListReaders_Return* ret,
785 BOOL unicode);
786
794 WINPR_ATTR_NODISCARD
795 FREERDP_API LONG smartcard_unpack_get_status_change_return(wStream* s,
797 BOOL unicode);
798
799#ifdef __cplusplus
800}
801#endif
802
803#endif /* FREERDP_CHANNEL_SMARTCARD_CLIENT_PACK_H */