Lines Matching refs:assert
18 fido_assert_t *assert = arg; in adjust_assert_count() local
34 if (assert->stmt_len != 0 || assert->stmt_cnt != 1 || in adjust_assert_count()
35 (size_t)n < assert->stmt_cnt) { in adjust_assert_count()
37 __func__, assert->stmt_len, assert->stmt_cnt, (size_t)n); in adjust_assert_count()
41 if (fido_assert_set_count(assert, (size_t)n) != FIDO_OK) { in adjust_assert_count()
46 assert->stmt_len = 0; /* XXX */ in adjust_assert_count()
81 fido_dev_get_assert_tx(fido_dev_t *dev, fido_assert_t *assert, in fido_dev_get_assert_tx() argument
85 fido_opt_t uv = assert->uv; in fido_dev_get_assert_tx()
94 if (assert->rp_id == NULL || assert->cdh.ptr == NULL) { in fido_dev_get_assert_tx()
96 (void *)assert->rp_id, (void *)assert->cdh.ptr); in fido_dev_get_assert_tx()
101 if ((argv[0] = cbor_build_string(assert->rp_id)) == NULL || in fido_dev_get_assert_tx()
102 (argv[1] = fido_blob_encode(&assert->cdh)) == NULL) { in fido_dev_get_assert_tx()
109 if (assert->allow_list.len) { in fido_dev_get_assert_tx()
110 const fido_blob_array_t *cl = &assert->allow_list; in fido_dev_get_assert_tx()
118 if (assert->ext.mask) in fido_dev_get_assert_tx()
119 if ((argv[3] = cbor_encode_assert_ext(dev, &assert->ext, ecdh, in fido_dev_get_assert_tx()
129 if ((r = cbor_add_uv_params(dev, cmd, &assert->cdh, pk, ecdh, in fido_dev_get_assert_tx()
130 pin, assert->rp_id, &argv[5], &argv[6], ms)) != FIDO_OK) { in fido_dev_get_assert_tx()
138 if (assert->up != FIDO_OPT_OMIT || uv != FIDO_OPT_OMIT) in fido_dev_get_assert_tx()
139 if ((argv[4] = cbor_encode_assert_opt(assert->up, uv)) == NULL) { in fido_dev_get_assert_tx()
162 fido_dev_get_assert_rx(fido_dev_t *dev, fido_assert_t *assert, int *ms) in fido_dev_get_assert_rx() argument
168 fido_assert_reset_rx(assert); in fido_dev_get_assert_rx()
182 if ((assert->stmt = calloc(1, sizeof(fido_assert_stmt))) == NULL) { in fido_dev_get_assert_rx()
186 assert->stmt_len = 0; in fido_dev_get_assert_rx()
187 assert->stmt_cnt = 1; in fido_dev_get_assert_rx()
190 if ((r = cbor_parse_reply(msg, (size_t)msglen, assert, in fido_dev_get_assert_rx()
197 if ((r = cbor_parse_reply(msg, (size_t)msglen, &assert->stmt[0], in fido_dev_get_assert_rx()
202 assert->stmt_len = 1; in fido_dev_get_assert_rx()
225 fido_get_next_assert_rx(fido_dev_t *dev, fido_assert_t *assert, int *ms) in fido_get_next_assert_rx() argument
243 if (assert->stmt_len >= assert->stmt_cnt) { in fido_get_next_assert_rx()
245 assert->stmt_len, assert->stmt_cnt); in fido_get_next_assert_rx()
251 &assert->stmt[assert->stmt_len], parse_assert_reply)) != FIDO_OK) { in fido_get_next_assert_rx()
264 fido_dev_get_assert_wait(fido_dev_t *dev, fido_assert_t *assert, in fido_dev_get_assert_wait() argument
269 if ((r = fido_dev_get_assert_tx(dev, assert, pk, ecdh, pin, in fido_dev_get_assert_wait()
271 (r = fido_dev_get_assert_rx(dev, assert, ms)) != FIDO_OK) in fido_dev_get_assert_wait()
274 while (assert->stmt_len < assert->stmt_cnt) { in fido_dev_get_assert_wait()
276 (r = fido_get_next_assert_rx(dev, assert, ms)) != FIDO_OK) in fido_dev_get_assert_wait()
278 assert->stmt_len++; in fido_dev_get_assert_wait()
285 decrypt_hmac_secrets(const fido_dev_t *dev, fido_assert_t *assert, in decrypt_hmac_secrets() argument
288 for (size_t i = 0; i < assert->stmt_cnt; i++) { in decrypt_hmac_secrets()
289 fido_assert_stmt *stmt = &assert->stmt[i]; in decrypt_hmac_secrets()
305 fido_dev_get_assert(fido_dev_t *dev, fido_assert_t *assert, const char *pin) in fido_dev_get_assert() argument
314 return (fido_winhello_get_assert(dev, assert, pin, ms)); in fido_dev_get_assert()
317 if (assert->rp_id == NULL || assert->cdh.ptr == NULL) { in fido_dev_get_assert()
319 (void *)assert->rp_id, (void *)assert->cdh.ptr); in fido_dev_get_assert()
324 if (pin != NULL || assert->ext.mask != 0) in fido_dev_get_assert()
326 return (u2f_authenticate(dev, assert, &ms)); in fido_dev_get_assert()
329 if (pin != NULL || (assert->uv == FIDO_OPT_TRUE && in fido_dev_get_assert()
331 (assert->ext.mask & FIDO_EXT_HMAC_SECRET)) { in fido_dev_get_assert()
338 r = fido_dev_get_assert_wait(dev, assert, pk, ecdh, pin, &ms); in fido_dev_get_assert()
339 if (r == FIDO_OK && (assert->ext.mask & FIDO_EXT_HMAC_SECRET)) in fido_dev_get_assert()
340 if (decrypt_hmac_secrets(dev, assert, ecdh) < 0) { in fido_dev_get_assert()
494 fido_assert_verify(const fido_assert_t *assert, size_t idx, int cose_alg, in fido_assert_verify() argument
506 if (idx >= assert->stmt_len || pk == NULL) { in fido_assert_verify()
511 stmt = &assert->stmt[idx]; in fido_assert_verify()
514 if (assert->cdh.ptr == NULL || assert->rp_id == NULL || in fido_assert_verify()
517 __func__, (void *)assert->cdh.ptr, assert->rp_id, in fido_assert_verify()
523 if (fido_check_flags(stmt->authdata.flags, assert->up, in fido_assert_verify()
524 assert->uv) < 0) { in fido_assert_verify()
530 if (check_extensions(stmt->authdata_ext.mask, assert->ext.mask) < 0) { in fido_assert_verify()
536 if (fido_check_rp_id(assert->rp_id, stmt->authdata.rp_id_hash) != 0) { in fido_assert_verify()
542 if (fido_get_signed_hash(cose_alg, &dgst, &assert->cdh, in fido_assert_verify()
580 fido_assert_set_clientdata(fido_assert_t *assert, const unsigned char *data, in fido_assert_set_clientdata() argument
583 if (!fido_blob_is_empty(&assert->cdh) || in fido_assert_set_clientdata()
584 fido_blob_set(&assert->cd, data, data_len) < 0) { in fido_assert_set_clientdata()
587 if (fido_sha256(&assert->cdh, data, data_len) < 0) { in fido_assert_set_clientdata()
588 fido_blob_reset(&assert->cd); in fido_assert_set_clientdata()
596 fido_assert_set_clientdata_hash(fido_assert_t *assert, in fido_assert_set_clientdata_hash() argument
599 if (!fido_blob_is_empty(&assert->cd) || in fido_assert_set_clientdata_hash()
600 fido_blob_set(&assert->cdh, hash, hash_len) < 0) in fido_assert_set_clientdata_hash()
607 fido_assert_set_hmac_salt(fido_assert_t *assert, const unsigned char *salt, in fido_assert_set_hmac_salt() argument
611 fido_blob_set(&assert->ext.hmac_salt, salt, salt_len) < 0) in fido_assert_set_hmac_salt()
618 fido_assert_set_hmac_secret(fido_assert_t *assert, size_t idx, in fido_assert_set_hmac_secret() argument
621 if (idx >= assert->stmt_len || (secret_len != 32 && secret_len != 64) || in fido_assert_set_hmac_secret()
622 fido_blob_set(&assert->stmt[idx].hmac_secret, secret, in fido_assert_set_hmac_secret()
630 fido_assert_set_rp(fido_assert_t *assert, const char *id) in fido_assert_set_rp() argument
632 if (assert->rp_id != NULL) { in fido_assert_set_rp()
633 free(assert->rp_id); in fido_assert_set_rp()
634 assert->rp_id = NULL; in fido_assert_set_rp()
640 if ((assert->rp_id = strdup(id)) == NULL) in fido_assert_set_rp()
647 fido_assert_allow_cred(fido_assert_t *assert, const unsigned char *ptr, in fido_assert_allow_cred() argument
656 if (assert->allow_list.len == SIZE_MAX) { in fido_assert_allow_cred()
662 recallocarray(assert->allow_list.ptr, assert->allow_list.len, in fido_assert_allow_cred()
663 assert->allow_list.len + 1, sizeof(fido_blob_t))) == NULL) { in fido_assert_allow_cred()
668 list_ptr[assert->allow_list.len++] = id; in fido_assert_allow_cred()
669 assert->allow_list.ptr = list_ptr; in fido_assert_allow_cred()
679 fido_assert_empty_allow_list(fido_assert_t *assert) in fido_assert_empty_allow_list() argument
681 fido_free_blob_array(&assert->allow_list); in fido_assert_empty_allow_list()
682 memset(&assert->allow_list, 0, sizeof(assert->allow_list)); in fido_assert_empty_allow_list()
688 fido_assert_set_extensions(fido_assert_t *assert, int ext) in fido_assert_set_extensions() argument
691 assert->ext.mask = 0; in fido_assert_set_extensions()
695 assert->ext.mask |= ext; in fido_assert_set_extensions()
702 fido_assert_set_options(fido_assert_t *assert, bool up, bool uv) in fido_assert_set_options() argument
704 assert->up = up ? FIDO_OPT_TRUE : FIDO_OPT_FALSE; in fido_assert_set_options()
705 assert->uv = uv ? FIDO_OPT_TRUE : FIDO_OPT_FALSE; in fido_assert_set_options()
711 fido_assert_set_up(fido_assert_t *assert, fido_opt_t up) in fido_assert_set_up() argument
713 assert->up = up; in fido_assert_set_up()
719 fido_assert_set_uv(fido_assert_t *assert, fido_opt_t uv) in fido_assert_set_uv() argument
721 assert->uv = uv; in fido_assert_set_uv()
727 fido_assert_clientdata_hash_ptr(const fido_assert_t *assert) in fido_assert_clientdata_hash_ptr() argument
729 return (assert->cdh.ptr); in fido_assert_clientdata_hash_ptr()
733 fido_assert_clientdata_hash_len(const fido_assert_t *assert) in fido_assert_clientdata_hash_len() argument
735 return (assert->cdh.len); in fido_assert_clientdata_hash_len()
745 fido_assert_reset_tx(fido_assert_t *assert) in fido_assert_reset_tx() argument
747 free(assert->rp_id); in fido_assert_reset_tx()
748 fido_blob_reset(&assert->cd); in fido_assert_reset_tx()
749 fido_blob_reset(&assert->cdh); in fido_assert_reset_tx()
750 fido_blob_reset(&assert->ext.hmac_salt); in fido_assert_reset_tx()
751 fido_assert_empty_allow_list(assert); in fido_assert_reset_tx()
752 memset(&assert->ext, 0, sizeof(assert->ext)); in fido_assert_reset_tx()
753 assert->rp_id = NULL; in fido_assert_reset_tx()
754 assert->up = FIDO_OPT_OMIT; in fido_assert_reset_tx()
755 assert->uv = FIDO_OPT_OMIT; in fido_assert_reset_tx()
767 fido_assert_reset_rx(fido_assert_t *assert) in fido_assert_reset_rx() argument
769 for (size_t i = 0; i < assert->stmt_cnt; i++) { in fido_assert_reset_rx()
770 free(assert->stmt[i].user.icon); in fido_assert_reset_rx()
771 free(assert->stmt[i].user.name); in fido_assert_reset_rx()
772 free(assert->stmt[i].user.display_name); in fido_assert_reset_rx()
773 fido_blob_reset(&assert->stmt[i].user.id); in fido_assert_reset_rx()
774 fido_blob_reset(&assert->stmt[i].id); in fido_assert_reset_rx()
775 fido_blob_reset(&assert->stmt[i].hmac_secret); in fido_assert_reset_rx()
776 fido_blob_reset(&assert->stmt[i].authdata_cbor); in fido_assert_reset_rx()
777 fido_blob_reset(&assert->stmt[i].largeblob_key); in fido_assert_reset_rx()
778 fido_blob_reset(&assert->stmt[i].sig); in fido_assert_reset_rx()
779 fido_assert_reset_extattr(&assert->stmt[i].authdata_ext); in fido_assert_reset_rx()
780 memset(&assert->stmt[i], 0, sizeof(assert->stmt[i])); in fido_assert_reset_rx()
782 free(assert->stmt); in fido_assert_reset_rx()
783 assert->stmt = NULL; in fido_assert_reset_rx()
784 assert->stmt_len = 0; in fido_assert_reset_rx()
785 assert->stmt_cnt = 0; in fido_assert_reset_rx()
791 fido_assert_t *assert; in fido_assert_free() local
793 if (assert_p == NULL || (assert = *assert_p) == NULL) in fido_assert_free()
795 fido_assert_reset_tx(assert); in fido_assert_free()
796 fido_assert_reset_rx(assert); in fido_assert_free()
797 free(assert); in fido_assert_free()
802 fido_assert_count(const fido_assert_t *assert) in fido_assert_count() argument
804 return (assert->stmt_len); in fido_assert_count()
808 fido_assert_rp_id(const fido_assert_t *assert) in fido_assert_rp_id() argument
810 return (assert->rp_id); in fido_assert_rp_id()
814 fido_assert_flags(const fido_assert_t *assert, size_t idx) in fido_assert_flags() argument
816 if (idx >= assert->stmt_len) in fido_assert_flags()
819 return (assert->stmt[idx].authdata.flags); in fido_assert_flags()
823 fido_assert_sigcount(const fido_assert_t *assert, size_t idx) in fido_assert_sigcount() argument
825 if (idx >= assert->stmt_len) in fido_assert_sigcount()
828 return (assert->stmt[idx].authdata.sigcount); in fido_assert_sigcount()
832 fido_assert_authdata_ptr(const fido_assert_t *assert, size_t idx) in fido_assert_authdata_ptr() argument
834 if (idx >= assert->stmt_len) in fido_assert_authdata_ptr()
837 return (assert->stmt[idx].authdata_cbor.ptr); in fido_assert_authdata_ptr()
841 fido_assert_authdata_len(const fido_assert_t *assert, size_t idx) in fido_assert_authdata_len() argument
843 if (idx >= assert->stmt_len) in fido_assert_authdata_len()
846 return (assert->stmt[idx].authdata_cbor.len); in fido_assert_authdata_len()
850 fido_assert_sig_ptr(const fido_assert_t *assert, size_t idx) in fido_assert_sig_ptr() argument
852 if (idx >= assert->stmt_len) in fido_assert_sig_ptr()
855 return (assert->stmt[idx].sig.ptr); in fido_assert_sig_ptr()
859 fido_assert_sig_len(const fido_assert_t *assert, size_t idx) in fido_assert_sig_len() argument
861 if (idx >= assert->stmt_len) in fido_assert_sig_len()
864 return (assert->stmt[idx].sig.len); in fido_assert_sig_len()
868 fido_assert_id_ptr(const fido_assert_t *assert, size_t idx) in fido_assert_id_ptr() argument
870 if (idx >= assert->stmt_len) in fido_assert_id_ptr()
873 return (assert->stmt[idx].id.ptr); in fido_assert_id_ptr()
877 fido_assert_id_len(const fido_assert_t *assert, size_t idx) in fido_assert_id_len() argument
879 if (idx >= assert->stmt_len) in fido_assert_id_len()
882 return (assert->stmt[idx].id.len); in fido_assert_id_len()
886 fido_assert_user_id_ptr(const fido_assert_t *assert, size_t idx) in fido_assert_user_id_ptr() argument
888 if (idx >= assert->stmt_len) in fido_assert_user_id_ptr()
891 return (assert->stmt[idx].user.id.ptr); in fido_assert_user_id_ptr()
895 fido_assert_user_id_len(const fido_assert_t *assert, size_t idx) in fido_assert_user_id_len() argument
897 if (idx >= assert->stmt_len) in fido_assert_user_id_len()
900 return (assert->stmt[idx].user.id.len); in fido_assert_user_id_len()
904 fido_assert_user_icon(const fido_assert_t *assert, size_t idx) in fido_assert_user_icon() argument
906 if (idx >= assert->stmt_len) in fido_assert_user_icon()
909 return (assert->stmt[idx].user.icon); in fido_assert_user_icon()
913 fido_assert_user_name(const fido_assert_t *assert, size_t idx) in fido_assert_user_name() argument
915 if (idx >= assert->stmt_len) in fido_assert_user_name()
918 return (assert->stmt[idx].user.name); in fido_assert_user_name()
922 fido_assert_user_display_name(const fido_assert_t *assert, size_t idx) in fido_assert_user_display_name() argument
924 if (idx >= assert->stmt_len) in fido_assert_user_display_name()
927 return (assert->stmt[idx].user.display_name); in fido_assert_user_display_name()
931 fido_assert_hmac_secret_ptr(const fido_assert_t *assert, size_t idx) in fido_assert_hmac_secret_ptr() argument
933 if (idx >= assert->stmt_len) in fido_assert_hmac_secret_ptr()
936 return (assert->stmt[idx].hmac_secret.ptr); in fido_assert_hmac_secret_ptr()
940 fido_assert_hmac_secret_len(const fido_assert_t *assert, size_t idx) in fido_assert_hmac_secret_len() argument
942 if (idx >= assert->stmt_len) in fido_assert_hmac_secret_len()
945 return (assert->stmt[idx].hmac_secret.len); in fido_assert_hmac_secret_len()
949 fido_assert_largeblob_key_ptr(const fido_assert_t *assert, size_t idx) in fido_assert_largeblob_key_ptr() argument
951 if (idx >= assert->stmt_len) in fido_assert_largeblob_key_ptr()
954 return (assert->stmt[idx].largeblob_key.ptr); in fido_assert_largeblob_key_ptr()
958 fido_assert_largeblob_key_len(const fido_assert_t *assert, size_t idx) in fido_assert_largeblob_key_len() argument
960 if (idx >= assert->stmt_len) in fido_assert_largeblob_key_len()
963 return (assert->stmt[idx].largeblob_key.len); in fido_assert_largeblob_key_len()
967 fido_assert_blob_ptr(const fido_assert_t *assert, size_t idx) in fido_assert_blob_ptr() argument
969 if (idx >= assert->stmt_len) in fido_assert_blob_ptr()
972 return (assert->stmt[idx].authdata_ext.blob.ptr); in fido_assert_blob_ptr()
976 fido_assert_blob_len(const fido_assert_t *assert, size_t idx) in fido_assert_blob_len() argument
978 if (idx >= assert->stmt_len) in fido_assert_blob_len()
981 return (assert->stmt[idx].authdata_ext.blob.len); in fido_assert_blob_len()
993 fido_assert_set_authdata(fido_assert_t *assert, size_t idx, in fido_assert_set_authdata() argument
1001 if (idx >= assert->stmt_len || ptr == NULL || len == 0) in fido_assert_set_authdata()
1004 stmt = &assert->stmt[idx]; in fido_assert_set_authdata()
1032 fido_assert_set_authdata_raw(fido_assert_t *assert, size_t idx, in fido_assert_set_authdata_raw() argument
1039 if (idx >= assert->stmt_len || ptr == NULL || len == 0) in fido_assert_set_authdata_raw()
1042 stmt = &assert->stmt[idx]; in fido_assert_set_authdata_raw()
1083 fido_assert_set_count(fido_assert_t *assert, size_t n) in fido_assert_set_count() argument
1094 new_stmt = recallocarray(assert->stmt, assert->stmt_cnt, n, in fido_assert_set_count()
1099 assert->stmt = new_stmt; in fido_assert_set_count()
1100 assert->stmt_cnt = n; in fido_assert_set_count()
1101 assert->stmt_len = n; in fido_assert_set_count()