Lines Matching refs:dev

37 set_random_report_len(fido_dev_t *dev)  in set_random_report_len()  argument
39 dev->rx_len = CTAP_MIN_REPORT_LEN + in set_random_report_len()
41 dev->tx_len = CTAP_MIN_REPORT_LEN + in set_random_report_len()
47 fido_dev_set_extension_flags(fido_dev_t *dev, const fido_cbor_info_t *info) in fido_dev_set_extension_flags() argument
54 dev->flags |= FIDO_DEV_CRED_PROT; in fido_dev_set_extension_flags()
58 fido_dev_set_option_flags(fido_dev_t *dev, const fido_cbor_info_t *info) in fido_dev_set_option_flags() argument
66 dev->flags |= val[i] ? FIDO_DEV_PIN_SET : FIDO_DEV_PIN_UNSET; in fido_dev_set_option_flags()
70 dev->flags |= FIDO_DEV_CREDMAN; in fido_dev_set_option_flags()
72 dev->flags |= val[i] ? FIDO_DEV_UV_SET : FIDO_DEV_UV_UNSET; in fido_dev_set_option_flags()
75 dev->flags |= FIDO_DEV_TOKEN_PERMS; in fido_dev_set_option_flags()
80 fido_dev_set_protocol_flags(fido_dev_t *dev, const fido_cbor_info_t *info) in fido_dev_set_protocol_flags() argument
88 dev->flags |= FIDO_DEV_PIN_PROTOCOL1; in fido_dev_set_protocol_flags()
91 dev->flags |= FIDO_DEV_PIN_PROTOCOL2; in fido_dev_set_protocol_flags()
101 fido_dev_set_flags(fido_dev_t *dev, const fido_cbor_info_t *info) in fido_dev_set_flags() argument
103 fido_dev_set_extension_flags(dev, info); in fido_dev_set_flags()
104 fido_dev_set_option_flags(dev, info); in fido_dev_set_flags()
105 fido_dev_set_protocol_flags(dev, info); in fido_dev_set_flags()
109 fido_dev_open_tx(fido_dev_t *dev, const char *path) in fido_dev_open_tx() argument
113 if (dev->io_handle != NULL) { in fido_dev_open_tx()
114 fido_log_debug("%s: handle=%p", __func__, dev->io_handle); in fido_dev_open_tx()
118 if (dev->io.open == NULL || dev->io.close == NULL) { in fido_dev_open_tx()
123 if (dev->cid != CTAP_CID_BROADCAST) { in fido_dev_open_tx()
124 fido_log_debug("%s: cid=0x%x", __func__, dev->cid); in fido_dev_open_tx()
128 if (fido_get_random(&dev->nonce, sizeof(dev->nonce)) < 0) { in fido_dev_open_tx()
133 if ((dev->io_handle = dev->io.open(path)) == NULL) { in fido_dev_open_tx()
138 if (dev->io_own) { in fido_dev_open_tx()
139 dev->rx_len = CTAP_MAX_REPORT_LEN; in fido_dev_open_tx()
140 dev->tx_len = CTAP_MAX_REPORT_LEN; in fido_dev_open_tx()
142 dev->rx_len = fido_hid_report_in_len(dev->io_handle); in fido_dev_open_tx()
143 dev->tx_len = fido_hid_report_out_len(dev->io_handle); in fido_dev_open_tx()
147 set_random_report_len(dev); in fido_dev_open_tx()
150 if (dev->rx_len < CTAP_MIN_REPORT_LEN || in fido_dev_open_tx()
151 dev->rx_len > CTAP_MAX_REPORT_LEN) { in fido_dev_open_tx()
152 fido_log_debug("%s: invalid rx_len %zu", __func__, dev->rx_len); in fido_dev_open_tx()
157 if (dev->tx_len < CTAP_MIN_REPORT_LEN || in fido_dev_open_tx()
158 dev->tx_len > CTAP_MAX_REPORT_LEN) { in fido_dev_open_tx()
159 fido_log_debug("%s: invalid tx_len %zu", __func__, dev->tx_len); in fido_dev_open_tx()
164 if (fido_tx(dev, CTAP_CMD_INIT, &dev->nonce, sizeof(dev->nonce)) < 0) { in fido_dev_open_tx()
172 dev->io.close(dev->io_handle); in fido_dev_open_tx()
173 dev->io_handle = NULL; in fido_dev_open_tx()
179 fido_dev_open_rx(fido_dev_t *dev, int ms) in fido_dev_open_rx() argument
185 if ((reply_len = fido_rx(dev, CTAP_CMD_INIT, &dev->attr, in fido_dev_open_rx()
186 sizeof(dev->attr), ms)) < 0) { in fido_dev_open_rx()
193 dev->attr.nonce = dev->nonce; in fido_dev_open_rx()
196 if ((size_t)reply_len != sizeof(dev->attr) || in fido_dev_open_rx()
197 dev->attr.nonce != dev->nonce) { in fido_dev_open_rx()
203 dev->flags = 0; in fido_dev_open_rx()
204 dev->cid = dev->attr.cid; in fido_dev_open_rx()
206 if (fido_dev_is_fido2(dev)) { in fido_dev_open_rx()
212 if ((r = fido_dev_get_cbor_info_wait(dev, info, in fido_dev_open_rx()
219 fido_dev_force_u2f(dev); in fido_dev_open_rx()
221 fido_dev_set_flags(dev, info); in fido_dev_open_rx()
225 if (fido_dev_is_fido2(dev) && info != NULL) { in fido_dev_open_rx()
226 dev->maxmsgsize = fido_cbor_info_maxmsgsiz(info); in fido_dev_open_rx()
228 FIDO_MAXMSG, (unsigned long)dev->maxmsgsize); in fido_dev_open_rx()
236 dev->io.close(dev->io_handle); in fido_dev_open_rx()
237 dev->io_handle = NULL; in fido_dev_open_rx()
244 fido_dev_open_wait(fido_dev_t *dev, const char *path, int ms) in fido_dev_open_wait() argument
250 return (fido_winhello_open(dev)); in fido_dev_open_wait()
252 if ((r = fido_dev_open_tx(dev, path)) != FIDO_OK || in fido_dev_open_wait()
253 (r = fido_dev_open_rx(dev, ms)) != FIDO_OK) in fido_dev_open_wait()
332 fido_dev_open_with_info(fido_dev_t *dev) in fido_dev_open_with_info() argument
334 if (dev->path == NULL) in fido_dev_open_with_info()
337 return (fido_dev_open_wait(dev, dev->path, -1)); in fido_dev_open_with_info()
341 fido_dev_open(fido_dev_t *dev, const char *path) in fido_dev_open() argument
352 dev->io_own = true; in fido_dev_open()
353 dev->io = (fido_dev_io_t) { in fido_dev_open()
359 dev->transport = (fido_dev_transport_t) { in fido_dev_open()
366 return (fido_dev_open_wait(dev, path, -1)); in fido_dev_open()
370 fido_dev_close(fido_dev_t *dev) in fido_dev_close() argument
373 if (dev->flags & FIDO_DEV_WINHELLO) in fido_dev_close()
374 return (fido_winhello_close(dev)); in fido_dev_close()
376 if (dev->io_handle == NULL || dev->io.close == NULL) in fido_dev_close()
379 dev->io.close(dev->io_handle); in fido_dev_close()
380 dev->io_handle = NULL; in fido_dev_close()
381 dev->cid = CTAP_CID_BROADCAST; in fido_dev_close()
387 fido_dev_set_sigmask(fido_dev_t *dev, const fido_sigset_t *sigmask) in fido_dev_set_sigmask() argument
389 if (dev->io_own || dev->io_handle == NULL || sigmask == NULL) in fido_dev_set_sigmask()
393 if (dev->transport.rx == fido_nfc_rx) in fido_dev_set_sigmask()
394 return (fido_nfc_set_sigmask(dev->io_handle, sigmask)); in fido_dev_set_sigmask()
396 return (fido_hid_set_sigmask(dev->io_handle, sigmask)); in fido_dev_set_sigmask()
400 fido_dev_cancel(fido_dev_t *dev) in fido_dev_cancel() argument
403 if (dev->flags & FIDO_DEV_WINHELLO) in fido_dev_cancel()
404 return (fido_winhello_cancel(dev)); in fido_dev_cancel()
406 if (fido_dev_is_fido2(dev) == false) in fido_dev_cancel()
408 if (fido_tx(dev, CTAP_CMD_CANCEL, NULL, 0) < 0) in fido_dev_cancel()
415 fido_dev_get_touch_begin(fido_dev_t *dev) in fido_dev_get_touch_begin() argument
432 if (fido_dev_is_fido2(dev) == false) in fido_dev_get_touch_begin()
433 return (u2f_get_touch_begin(dev)); in fido_dev_get_touch_begin()
459 if (fido_dev_supports_pin(dev)) { in fido_dev_get_touch_begin()
461 (argv[8] = cbor_encode_pin_opt(dev)) == NULL) { in fido_dev_get_touch_begin()
468 fido_tx(dev, CTAP_CMD_CBOR, f.ptr, f.len) < 0) { in fido_dev_get_touch_begin()
486 fido_dev_get_touch_status(fido_dev_t *dev, int *touched, int ms) in fido_dev_get_touch_status() argument
492 if (fido_dev_is_fido2(dev) == false) in fido_dev_get_touch_status()
493 return (u2f_get_touch_status(dev, touched, ms)); in fido_dev_get_touch_status()
495 switch ((r = fido_rx_cbor_status(dev, ms))) { in fido_dev_get_touch_status()
514 fido_dev_set_io_functions(fido_dev_t *dev, const fido_dev_io_t *io) in fido_dev_set_io_functions() argument
516 if (dev->io_handle != NULL) { in fido_dev_set_io_functions()
527 dev->io = *io; in fido_dev_set_io_functions()
528 dev->io_own = true; in fido_dev_set_io_functions()
534 fido_dev_set_transport_functions(fido_dev_t *dev, const fido_dev_transport_t *t) in fido_dev_set_transport_functions() argument
536 if (dev->io_handle != NULL) { in fido_dev_set_transport_functions()
541 dev->transport = *t; in fido_dev_set_transport_functions()
542 dev->io_own = true; in fido_dev_set_transport_functions()
559 fido_dev_t *dev; in fido_dev_new() local
561 if ((dev = calloc(1, sizeof(*dev))) == NULL) in fido_dev_new()
564 dev->cid = CTAP_CID_BROADCAST; in fido_dev_new()
565 dev->io = (fido_dev_io_t) { in fido_dev_new()
572 return (dev); in fido_dev_new()
578 fido_dev_t *dev; in fido_dev_new_with_info() local
580 if ((dev = calloc(1, sizeof(*dev))) == NULL) in fido_dev_new_with_info()
587 fido_dev_free(&dev); in fido_dev_new_with_info()
592 dev->io = di->io; in fido_dev_new_with_info()
593 dev->io_own = di->transport.tx != NULL || di->transport.rx != NULL; in fido_dev_new_with_info()
594 dev->transport = di->transport; in fido_dev_new_with_info()
595 dev->cid = CTAP_CID_BROADCAST; in fido_dev_new_with_info()
597 if ((dev->path = strdup(di->path)) == NULL) { in fido_dev_new_with_info()
599 fido_dev_free(&dev); in fido_dev_new_with_info()
603 return (dev); in fido_dev_new_with_info()
609 fido_dev_t *dev; in fido_dev_free() local
611 if (dev_p == NULL || (dev = *dev_p) == NULL) in fido_dev_free()
614 free(dev->path); in fido_dev_free()
615 free(dev); in fido_dev_free()
621 fido_dev_protocol(const fido_dev_t *dev) in fido_dev_protocol() argument
623 return (dev->attr.protocol); in fido_dev_protocol()
627 fido_dev_major(const fido_dev_t *dev) in fido_dev_major() argument
629 return (dev->attr.major); in fido_dev_major()
633 fido_dev_minor(const fido_dev_t *dev) in fido_dev_minor() argument
635 return (dev->attr.minor); in fido_dev_minor()
639 fido_dev_build(const fido_dev_t *dev) in fido_dev_build() argument
641 return (dev->attr.build); in fido_dev_build()
645 fido_dev_flags(const fido_dev_t *dev) in fido_dev_flags() argument
647 return (dev->attr.flags); in fido_dev_flags()
651 fido_dev_is_fido2(const fido_dev_t *dev) in fido_dev_is_fido2() argument
653 return (dev->attr.flags & FIDO_CAP_CBOR); in fido_dev_is_fido2()
657 fido_dev_is_winhello(const fido_dev_t *dev) in fido_dev_is_winhello() argument
659 return (dev->flags & FIDO_DEV_WINHELLO); in fido_dev_is_winhello()
663 fido_dev_supports_pin(const fido_dev_t *dev) in fido_dev_supports_pin() argument
665 return (dev->flags & (FIDO_DEV_PIN_SET|FIDO_DEV_PIN_UNSET)); in fido_dev_supports_pin()
669 fido_dev_has_pin(const fido_dev_t *dev) in fido_dev_has_pin() argument
671 return (dev->flags & FIDO_DEV_PIN_SET); in fido_dev_has_pin()
675 fido_dev_supports_cred_prot(const fido_dev_t *dev) in fido_dev_supports_cred_prot() argument
677 return (dev->flags & FIDO_DEV_CRED_PROT); in fido_dev_supports_cred_prot()
681 fido_dev_supports_credman(const fido_dev_t *dev) in fido_dev_supports_credman() argument
683 return (dev->flags & FIDO_DEV_CREDMAN); in fido_dev_supports_credman()
687 fido_dev_supports_uv(const fido_dev_t *dev) in fido_dev_supports_uv() argument
689 return (dev->flags & (FIDO_DEV_UV_SET|FIDO_DEV_UV_UNSET)); in fido_dev_supports_uv()
693 fido_dev_has_uv(const fido_dev_t *dev) in fido_dev_has_uv() argument
695 return (dev->flags & FIDO_DEV_UV_SET); in fido_dev_has_uv()
699 fido_dev_supports_permissions(const fido_dev_t *dev) in fido_dev_supports_permissions() argument
701 return (dev->flags & FIDO_DEV_TOKEN_PERMS); in fido_dev_supports_permissions()
705 fido_dev_force_u2f(fido_dev_t *dev) in fido_dev_force_u2f() argument
707 dev->attr.flags &= (uint8_t)~FIDO_CAP_CBOR; in fido_dev_force_u2f()
708 dev->flags = 0; in fido_dev_force_u2f()
712 fido_dev_force_fido2(fido_dev_t *dev) in fido_dev_force_fido2() argument
714 dev->attr.flags |= FIDO_CAP_CBOR; in fido_dev_force_fido2()
718 fido_dev_get_pin_protocol(const fido_dev_t *dev) in fido_dev_get_pin_protocol() argument
720 if (dev->flags & FIDO_DEV_PIN_PROTOCOL2) in fido_dev_get_pin_protocol()
722 else if (dev->flags & FIDO_DEV_PIN_PROTOCOL1) in fido_dev_get_pin_protocol()
729 fido_dev_maxmsgsize(const fido_dev_t *dev) in fido_dev_maxmsgsize() argument
731 return (dev->maxmsgsize); in fido_dev_maxmsgsize()