Lines Matching full:assert

17 	fido_assert_t	*assert = arg;  in adjust_assert_count()  local
33 if (assert->stmt_len != 0 || assert->stmt_cnt != 1 || in adjust_assert_count()
34 (size_t)n < assert->stmt_cnt) { in adjust_assert_count()
36 __func__, assert->stmt_len, assert->stmt_cnt, (size_t)n); in adjust_assert_count()
40 if (fido_assert_set_count(assert, (size_t)n) != FIDO_OK) { in adjust_assert_count()
45 assert->stmt_len = 0; /* XXX */ in adjust_assert_count()
80 fido_dev_get_assert_tx(fido_dev_t *dev, fido_assert_t *assert, in fido_dev_get_assert_tx() argument
84 fido_opt_t uv = assert->uv; in fido_dev_get_assert_tx()
93 if (assert->rp_id == NULL || assert->cdh.ptr == NULL) { in fido_dev_get_assert_tx()
95 (void *)assert->rp_id, (void *)assert->cdh.ptr); in fido_dev_get_assert_tx()
100 if ((argv[0] = cbor_build_string(assert->rp_id)) == NULL || in fido_dev_get_assert_tx()
101 (argv[1] = fido_blob_encode(&assert->cdh)) == NULL) { in fido_dev_get_assert_tx()
108 if (assert->allow_list.len) { in fido_dev_get_assert_tx()
109 const fido_blob_array_t *cl = &assert->allow_list; in fido_dev_get_assert_tx()
117 if (assert->ext.mask) in fido_dev_get_assert_tx()
118 if ((argv[3] = cbor_encode_assert_ext(dev, &assert->ext, ecdh, in fido_dev_get_assert_tx()
128 if ((r = cbor_add_uv_params(dev, cmd, &assert->cdh, pk, ecdh, in fido_dev_get_assert_tx()
129 pin, assert->rp_id, &argv[5], &argv[6], ms)) != FIDO_OK) { in fido_dev_get_assert_tx()
137 if (assert->up != FIDO_OPT_OMIT || uv != FIDO_OPT_OMIT) in fido_dev_get_assert_tx()
138 if ((argv[4] = cbor_encode_assert_opt(assert->up, uv)) == NULL) { in fido_dev_get_assert_tx()
161 fido_dev_get_assert_rx(fido_dev_t *dev, fido_assert_t *assert, int *ms) in fido_dev_get_assert_rx() argument
167 fido_assert_reset_rx(assert); in fido_dev_get_assert_rx()
176 if ((assert->stmt = calloc(1, sizeof(fido_assert_stmt))) == NULL) in fido_dev_get_assert_rx()
179 assert->stmt_len = 0; in fido_dev_get_assert_rx()
180 assert->stmt_cnt = 1; in fido_dev_get_assert_rx()
183 if ((r = cbor_parse_reply(reply, (size_t)reply_len, assert, in fido_dev_get_assert_rx()
191 &assert->stmt[assert->stmt_len], parse_assert_reply)) != FIDO_OK) { in fido_dev_get_assert_rx()
196 assert->stmt_len++; in fido_dev_get_assert_rx()
215 fido_get_next_assert_rx(fido_dev_t *dev, fido_assert_t *assert, int *ms) in fido_get_next_assert_rx() argument
228 if (assert->stmt_len >= assert->stmt_cnt) { in fido_get_next_assert_rx()
230 assert->stmt_len, assert->stmt_cnt); in fido_get_next_assert_rx()
235 &assert->stmt[assert->stmt_len], parse_assert_reply)) != FIDO_OK) { in fido_get_next_assert_rx()
244 fido_dev_get_assert_wait(fido_dev_t *dev, fido_assert_t *assert, in fido_dev_get_assert_wait() argument
249 if ((r = fido_dev_get_assert_tx(dev, assert, pk, ecdh, pin, in fido_dev_get_assert_wait()
251 (r = fido_dev_get_assert_rx(dev, assert, ms)) != FIDO_OK) in fido_dev_get_assert_wait()
254 while (assert->stmt_len < assert->stmt_cnt) { in fido_dev_get_assert_wait()
256 (r = fido_get_next_assert_rx(dev, assert, ms)) != FIDO_OK) in fido_dev_get_assert_wait()
258 assert->stmt_len++; in fido_dev_get_assert_wait()
265 decrypt_hmac_secrets(const fido_dev_t *dev, fido_assert_t *assert, in decrypt_hmac_secrets() argument
268 for (size_t i = 0; i < assert->stmt_cnt; i++) { in decrypt_hmac_secrets()
269 fido_assert_stmt *stmt = &assert->stmt[i]; in decrypt_hmac_secrets()
285 fido_dev_get_assert(fido_dev_t *dev, fido_assert_t *assert, const char *pin) in fido_dev_get_assert() argument
294 return (fido_winhello_get_assert(dev, assert, pin, ms)); in fido_dev_get_assert()
297 if (assert->rp_id == NULL || assert->cdh.ptr == NULL) { in fido_dev_get_assert()
299 (void *)assert->rp_id, (void *)assert->cdh.ptr); in fido_dev_get_assert()
304 if (pin != NULL || assert->ext.mask != 0) in fido_dev_get_assert()
306 return (u2f_authenticate(dev, assert, &ms)); in fido_dev_get_assert()
309 if (pin != NULL || (assert->uv == FIDO_OPT_TRUE && in fido_dev_get_assert()
311 (assert->ext.mask & FIDO_EXT_HMAC_SECRET)) { in fido_dev_get_assert()
318 r = fido_dev_get_assert_wait(dev, assert, pk, ecdh, pin, &ms); in fido_dev_get_assert()
319 if (r == FIDO_OK && (assert->ext.mask & FIDO_EXT_HMAC_SECRET)) in fido_dev_get_assert()
320 if (decrypt_hmac_secrets(dev, assert, ecdh) < 0) { in fido_dev_get_assert()
425 fido_assert_verify(const fido_assert_t *assert, size_t idx, int cose_alg, in fido_assert_verify() argument
437 if (idx >= assert->stmt_len || pk == NULL) { in fido_assert_verify()
442 stmt = &assert->stmt[idx]; in fido_assert_verify()
445 if (assert->cdh.ptr == NULL || assert->rp_id == NULL || in fido_assert_verify()
448 __func__, (void *)assert->cdh.ptr, assert->rp_id, in fido_assert_verify()
454 if (fido_check_flags(stmt->authdata.flags, assert->up, in fido_assert_verify()
455 assert->uv) < 0) { in fido_assert_verify()
461 if (check_extensions(stmt->authdata_ext.mask, assert->ext.mask) < 0) { in fido_assert_verify()
467 if (fido_check_rp_id(assert->rp_id, stmt->authdata.rp_id_hash) != 0) { in fido_assert_verify()
473 if (fido_get_signed_hash(cose_alg, &dgst, &assert->cdh, in fido_assert_verify()
508 fido_assert_set_clientdata(fido_assert_t *assert, const unsigned char *data, in fido_assert_set_clientdata() argument
511 if (!fido_blob_is_empty(&assert->cdh) || in fido_assert_set_clientdata()
512 fido_blob_set(&assert->cd, data, data_len) < 0) { in fido_assert_set_clientdata()
515 if (fido_sha256(&assert->cdh, data, data_len) < 0) { in fido_assert_set_clientdata()
516 fido_blob_reset(&assert->cd); in fido_assert_set_clientdata()
524 fido_assert_set_clientdata_hash(fido_assert_t *assert, in fido_assert_set_clientdata_hash() argument
527 if (!fido_blob_is_empty(&assert->cd) || in fido_assert_set_clientdata_hash()
528 fido_blob_set(&assert->cdh, hash, hash_len) < 0) in fido_assert_set_clientdata_hash()
535 fido_assert_set_hmac_salt(fido_assert_t *assert, const unsigned char *salt, in fido_assert_set_hmac_salt() argument
539 fido_blob_set(&assert->ext.hmac_salt, salt, salt_len) < 0) in fido_assert_set_hmac_salt()
546 fido_assert_set_hmac_secret(fido_assert_t *assert, size_t idx, in fido_assert_set_hmac_secret() argument
549 if (idx >= assert->stmt_len || (secret_len != 32 && secret_len != 64) || in fido_assert_set_hmac_secret()
550 fido_blob_set(&assert->stmt[idx].hmac_secret, secret, in fido_assert_set_hmac_secret()
558 fido_assert_set_rp(fido_assert_t *assert, const char *id) in fido_assert_set_rp() argument
560 if (assert->rp_id != NULL) { in fido_assert_set_rp()
561 free(assert->rp_id); in fido_assert_set_rp()
562 assert->rp_id = NULL; in fido_assert_set_rp()
568 if ((assert->rp_id = strdup(id)) == NULL) in fido_assert_set_rp()
575 fido_assert_allow_cred(fido_assert_t *assert, const unsigned char *ptr, in fido_assert_allow_cred() argument
584 if (assert->allow_list.len == SIZE_MAX) { in fido_assert_allow_cred()
590 recallocarray(assert->allow_list.ptr, assert->allow_list.len, in fido_assert_allow_cred()
591 assert->allow_list.len + 1, sizeof(fido_blob_t))) == NULL) { in fido_assert_allow_cred()
596 list_ptr[assert->allow_list.len++] = id; in fido_assert_allow_cred()
597 assert->allow_list.ptr = list_ptr; in fido_assert_allow_cred()
608 fido_assert_set_extensions(fido_assert_t *assert, int ext) in fido_assert_set_extensions() argument
611 assert->ext.mask = 0; in fido_assert_set_extensions()
615 assert->ext.mask |= ext; in fido_assert_set_extensions()
622 fido_assert_set_options(fido_assert_t *assert, bool up, bool uv) in fido_assert_set_options() argument
624 assert->up = up ? FIDO_OPT_TRUE : FIDO_OPT_FALSE; in fido_assert_set_options()
625 assert->uv = uv ? FIDO_OPT_TRUE : FIDO_OPT_FALSE; in fido_assert_set_options()
631 fido_assert_set_up(fido_assert_t *assert, fido_opt_t up) in fido_assert_set_up() argument
633 assert->up = up; in fido_assert_set_up()
639 fido_assert_set_uv(fido_assert_t *assert, fido_opt_t uv) in fido_assert_set_uv() argument
641 assert->uv = uv; in fido_assert_set_uv()
647 fido_assert_clientdata_hash_ptr(const fido_assert_t *assert) in fido_assert_clientdata_hash_ptr() argument
649 return (assert->cdh.ptr); in fido_assert_clientdata_hash_ptr()
653 fido_assert_clientdata_hash_len(const fido_assert_t *assert) in fido_assert_clientdata_hash_len() argument
655 return (assert->cdh.len); in fido_assert_clientdata_hash_len()
665 fido_assert_reset_tx(fido_assert_t *assert) in fido_assert_reset_tx() argument
667 free(assert->rp_id); in fido_assert_reset_tx()
668 fido_blob_reset(&assert->cd); in fido_assert_reset_tx()
669 fido_blob_reset(&assert->cdh); in fido_assert_reset_tx()
670 fido_blob_reset(&assert->ext.hmac_salt); in fido_assert_reset_tx()
671 fido_free_blob_array(&assert->allow_list); in fido_assert_reset_tx()
672 memset(&assert->ext, 0, sizeof(assert->ext)); in fido_assert_reset_tx()
673 memset(&assert->allow_list, 0, sizeof(assert->allow_list)); in fido_assert_reset_tx()
674 assert->rp_id = NULL; in fido_assert_reset_tx()
675 assert->up = FIDO_OPT_OMIT; in fido_assert_reset_tx()
676 assert->uv = FIDO_OPT_OMIT; in fido_assert_reset_tx()
687 fido_assert_reset_rx(fido_assert_t *assert) in fido_assert_reset_rx() argument
689 for (size_t i = 0; i < assert->stmt_cnt; i++) { in fido_assert_reset_rx()
690 free(assert->stmt[i].user.icon); in fido_assert_reset_rx()
691 free(assert->stmt[i].user.name); in fido_assert_reset_rx()
692 free(assert->stmt[i].user.display_name); in fido_assert_reset_rx()
693 fido_blob_reset(&assert->stmt[i].user.id); in fido_assert_reset_rx()
694 fido_blob_reset(&assert->stmt[i].id); in fido_assert_reset_rx()
695 fido_blob_reset(&assert->stmt[i].hmac_secret); in fido_assert_reset_rx()
696 fido_blob_reset(&assert->stmt[i].authdata_cbor); in fido_assert_reset_rx()
697 fido_blob_reset(&assert->stmt[i].largeblob_key); in fido_assert_reset_rx()
698 fido_blob_reset(&assert->stmt[i].sig); in fido_assert_reset_rx()
699 fido_assert_reset_extattr(&assert->stmt[i].authdata_ext); in fido_assert_reset_rx()
700 memset(&assert->stmt[i], 0, sizeof(assert->stmt[i])); in fido_assert_reset_rx()
702 free(assert->stmt); in fido_assert_reset_rx()
703 assert->stmt = NULL; in fido_assert_reset_rx()
704 assert->stmt_len = 0; in fido_assert_reset_rx()
705 assert->stmt_cnt = 0; in fido_assert_reset_rx()
711 fido_assert_t *assert; in fido_assert_free() local
713 if (assert_p == NULL || (assert = *assert_p) == NULL) in fido_assert_free()
715 fido_assert_reset_tx(assert); in fido_assert_free()
716 fido_assert_reset_rx(assert); in fido_assert_free()
717 free(assert); in fido_assert_free()
722 fido_assert_count(const fido_assert_t *assert) in fido_assert_count() argument
724 return (assert->stmt_len); in fido_assert_count()
728 fido_assert_rp_id(const fido_assert_t *assert) in fido_assert_rp_id() argument
730 return (assert->rp_id); in fido_assert_rp_id()
734 fido_assert_flags(const fido_assert_t *assert, size_t idx) in fido_assert_flags() argument
736 if (idx >= assert->stmt_len) in fido_assert_flags()
739 return (assert->stmt[idx].authdata.flags); in fido_assert_flags()
743 fido_assert_sigcount(const fido_assert_t *assert, size_t idx) in fido_assert_sigcount() argument
745 if (idx >= assert->stmt_len) in fido_assert_sigcount()
748 return (assert->stmt[idx].authdata.sigcount); in fido_assert_sigcount()
752 fido_assert_authdata_ptr(const fido_assert_t *assert, size_t idx) in fido_assert_authdata_ptr() argument
754 if (idx >= assert->stmt_len) in fido_assert_authdata_ptr()
757 return (assert->stmt[idx].authdata_cbor.ptr); in fido_assert_authdata_ptr()
761 fido_assert_authdata_len(const fido_assert_t *assert, size_t idx) in fido_assert_authdata_len() argument
763 if (idx >= assert->stmt_len) in fido_assert_authdata_len()
766 return (assert->stmt[idx].authdata_cbor.len); in fido_assert_authdata_len()
770 fido_assert_sig_ptr(const fido_assert_t *assert, size_t idx) in fido_assert_sig_ptr() argument
772 if (idx >= assert->stmt_len) in fido_assert_sig_ptr()
775 return (assert->stmt[idx].sig.ptr); in fido_assert_sig_ptr()
779 fido_assert_sig_len(const fido_assert_t *assert, size_t idx) in fido_assert_sig_len() argument
781 if (idx >= assert->stmt_len) in fido_assert_sig_len()
784 return (assert->stmt[idx].sig.len); in fido_assert_sig_len()
788 fido_assert_id_ptr(const fido_assert_t *assert, size_t idx) in fido_assert_id_ptr() argument
790 if (idx >= assert->stmt_len) in fido_assert_id_ptr()
793 return (assert->stmt[idx].id.ptr); in fido_assert_id_ptr()
797 fido_assert_id_len(const fido_assert_t *assert, size_t idx) in fido_assert_id_len() argument
799 if (idx >= assert->stmt_len) in fido_assert_id_len()
802 return (assert->stmt[idx].id.len); in fido_assert_id_len()
806 fido_assert_user_id_ptr(const fido_assert_t *assert, size_t idx) in fido_assert_user_id_ptr() argument
808 if (idx >= assert->stmt_len) in fido_assert_user_id_ptr()
811 return (assert->stmt[idx].user.id.ptr); in fido_assert_user_id_ptr()
815 fido_assert_user_id_len(const fido_assert_t *assert, size_t idx) in fido_assert_user_id_len() argument
817 if (idx >= assert->stmt_len) in fido_assert_user_id_len()
820 return (assert->stmt[idx].user.id.len); in fido_assert_user_id_len()
824 fido_assert_user_icon(const fido_assert_t *assert, size_t idx) in fido_assert_user_icon() argument
826 if (idx >= assert->stmt_len) in fido_assert_user_icon()
829 return (assert->stmt[idx].user.icon); in fido_assert_user_icon()
833 fido_assert_user_name(const fido_assert_t *assert, size_t idx) in fido_assert_user_name() argument
835 if (idx >= assert->stmt_len) in fido_assert_user_name()
838 return (assert->stmt[idx].user.name); in fido_assert_user_name()
842 fido_assert_user_display_name(const fido_assert_t *assert, size_t idx) in fido_assert_user_display_name() argument
844 if (idx >= assert->stmt_len) in fido_assert_user_display_name()
847 return (assert->stmt[idx].user.display_name); in fido_assert_user_display_name()
851 fido_assert_hmac_secret_ptr(const fido_assert_t *assert, size_t idx) in fido_assert_hmac_secret_ptr() argument
853 if (idx >= assert->stmt_len) in fido_assert_hmac_secret_ptr()
856 return (assert->stmt[idx].hmac_secret.ptr); in fido_assert_hmac_secret_ptr()
860 fido_assert_hmac_secret_len(const fido_assert_t *assert, size_t idx) in fido_assert_hmac_secret_len() argument
862 if (idx >= assert->stmt_len) in fido_assert_hmac_secret_len()
865 return (assert->stmt[idx].hmac_secret.len); in fido_assert_hmac_secret_len()
869 fido_assert_largeblob_key_ptr(const fido_assert_t *assert, size_t idx) in fido_assert_largeblob_key_ptr() argument
871 if (idx >= assert->stmt_len) in fido_assert_largeblob_key_ptr()
874 return (assert->stmt[idx].largeblob_key.ptr); in fido_assert_largeblob_key_ptr()
878 fido_assert_largeblob_key_len(const fido_assert_t *assert, size_t idx) in fido_assert_largeblob_key_len() argument
880 if (idx >= assert->stmt_len) in fido_assert_largeblob_key_len()
883 return (assert->stmt[idx].largeblob_key.len); in fido_assert_largeblob_key_len()
887 fido_assert_blob_ptr(const fido_assert_t *assert, size_t idx) in fido_assert_blob_ptr() argument
889 if (idx >= assert->stmt_len) in fido_assert_blob_ptr()
892 return (assert->stmt[idx].authdata_ext.blob.ptr); in fido_assert_blob_ptr()
896 fido_assert_blob_len(const fido_assert_t *assert, size_t idx) in fido_assert_blob_len() argument
898 if (idx >= assert->stmt_len) in fido_assert_blob_len()
901 return (assert->stmt[idx].authdata_ext.blob.len); in fido_assert_blob_len()
913 fido_assert_set_authdata(fido_assert_t *assert, size_t idx, in fido_assert_set_authdata() argument
921 if (idx >= assert->stmt_len || ptr == NULL || len == 0) in fido_assert_set_authdata()
924 stmt = &assert->stmt[idx]; in fido_assert_set_authdata()
952 fido_assert_set_authdata_raw(fido_assert_t *assert, size_t idx, in fido_assert_set_authdata_raw() argument
959 if (idx >= assert->stmt_len || ptr == NULL || len == 0) in fido_assert_set_authdata_raw()
962 stmt = &assert->stmt[idx]; in fido_assert_set_authdata_raw()
1003 fido_assert_set_count(fido_assert_t *assert, size_t n) in fido_assert_set_count() argument
1014 new_stmt = recallocarray(assert->stmt, assert->stmt_cnt, n, in fido_assert_set_count()
1019 assert->stmt = new_stmt; in fido_assert_set_count()
1020 assert->stmt_cnt = n; in fido_assert_set_count()
1021 assert->stmt_len = n; in fido_assert_set_count()