36 Value vapdu = pop_value(vm);
40 pcsc_card_entry *ce = pcsc_get_card(hid);
55 unsigned char sbuf[4096];
56 if (
n > (
int)
sizeof(sbuf))
n = (int)
sizeof(sbuf);
57 for (
int i = 0; i <
n; ++i) {
61 sbuf[i] = (
unsigned char)(
v & 0xFF);
70 if (ce->proto == SCARD_PROTOCOL_T0)
72 else if (ce->proto == SCARD_PROTOCOL_T1)
78 unsigned char rbuf[4096];
79 DWORD rlen =
sizeof(rbuf);
80 LONG rv = SCardTransmit(ce->h, &pio, sbuf, (DWORD)
n, NULL, rbuf, &rlen);
82 int sw1 = -1, sw2 = -1;
84 if (rv == SCARD_S_SUCCESS && rlen >= 2) {
87 datalen = (int)rlen - 2;
99 for (
int i = 0; i < datalen; ++i)
102 for (
int i = 0; i < datalen; ++i)
111 Value vapdu = pop_value(vm);
int map_set(Value *vm, const char *key, Value v)
Insert or replace a key in the map.
Value make_map_empty(void)
Construct a new empty map Value.
Tagged union representing a Fun value.
int array_length(const Value *v)
Get the element count of an array Value.
int array_get_copy(const Value *v, int index, Value *out)
Copy an array element into out.
Value make_int(int64_t v)
Construct a Value representing a 64-bit integer.
Value make_array_from_values(const Value *vals, int count)
Create an array Value by copying items from an input span.