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])) != 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()
177 if ((assert->stmt = calloc(1, sizeof(fido_assert_stmt))) == NULL) in fido_dev_get_assert_rx()
180 assert->stmt_len = 0; in fido_dev_get_assert_rx()
181 assert->stmt_cnt = 1; in fido_dev_get_assert_rx()
184 if ((r = cbor_parse_reply(reply, (size_t)reply_len, assert, in fido_dev_get_assert_rx()
192 &assert->stmt[assert->stmt_len], parse_assert_reply)) != FIDO_OK) { in fido_dev_get_assert_rx()
197 assert->stmt_len++; in fido_dev_get_assert_rx()
216 fido_get_next_assert_rx(fido_dev_t *dev, fido_assert_t *assert, int ms) in fido_get_next_assert_rx() argument
229 if (assert->stmt_len >= assert->stmt_cnt) { in fido_get_next_assert_rx()
231 assert->stmt_len, assert->stmt_cnt); in fido_get_next_assert_rx()
236 &assert->stmt[assert->stmt_len], parse_assert_reply)) != FIDO_OK) { in fido_get_next_assert_rx()
245 fido_dev_get_assert_wait(fido_dev_t *dev, fido_assert_t *assert, in fido_dev_get_assert_wait() argument
250 if ((r = fido_dev_get_assert_tx(dev, assert, pk, ecdh, pin)) != FIDO_OK || 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
293 return (fido_winhello_get_assert(dev, assert, pin)); in fido_dev_get_assert()
296 if (assert->rp_id == NULL || assert->cdh.ptr == NULL) { in fido_dev_get_assert()
298 (void *)assert->rp_id, (void *)assert->cdh.ptr); in fido_dev_get_assert()
303 if (pin != NULL || assert->ext.mask != 0) in fido_dev_get_assert()
305 return (u2f_authenticate(dev, assert, -1)); in fido_dev_get_assert()
308 if (pin != NULL || (assert->uv == FIDO_OPT_TRUE && in fido_dev_get_assert()
310 (assert->ext.mask & FIDO_EXT_HMAC_SECRET)) { in fido_dev_get_assert()
317 r = fido_dev_get_assert_wait(dev, assert, pk, ecdh, pin, -1); in fido_dev_get_assert()
318 if (r == FIDO_OK && (assert->ext.mask & FIDO_EXT_HMAC_SECRET)) in fido_dev_get_assert()
319 if (decrypt_hmac_secrets(dev, assert, ecdh) < 0) { in fido_dev_get_assert()
535 fido_assert_verify(const fido_assert_t *assert, size_t idx, int cose_alg, in fido_assert_verify() argument
547 if (idx >= assert->stmt_len || pk == NULL) { in fido_assert_verify()
552 stmt = &assert->stmt[idx]; in fido_assert_verify()
555 if (assert->cdh.ptr == NULL || assert->rp_id == NULL || in fido_assert_verify()
558 __func__, (void *)assert->cdh.ptr, assert->rp_id, in fido_assert_verify()
564 if (fido_check_flags(stmt->authdata.flags, assert->up, in fido_assert_verify()
565 assert->uv) < 0) { in fido_assert_verify()
571 if (check_extensions(stmt->authdata_ext.mask, assert->ext.mask) < 0) { in fido_assert_verify()
577 if (fido_check_rp_id(assert->rp_id, stmt->authdata.rp_id_hash) != 0) { in fido_assert_verify()
583 if (fido_get_signed_hash(cose_alg, &dgst, &assert->cdh, in fido_assert_verify()
618 fido_assert_set_clientdata(fido_assert_t *assert, const unsigned char *data, in fido_assert_set_clientdata() argument
621 if (!fido_blob_is_empty(&assert->cdh) || in fido_assert_set_clientdata()
622 fido_blob_set(&assert->cd, data, data_len) < 0) { in fido_assert_set_clientdata()
625 if (fido_sha256(&assert->cdh, data, data_len) < 0) { in fido_assert_set_clientdata()
626 fido_blob_reset(&assert->cd); in fido_assert_set_clientdata()
634 fido_assert_set_clientdata_hash(fido_assert_t *assert, in fido_assert_set_clientdata_hash() argument
637 if (!fido_blob_is_empty(&assert->cd) || in fido_assert_set_clientdata_hash()
638 fido_blob_set(&assert->cdh, hash, hash_len) < 0) in fido_assert_set_clientdata_hash()
645 fido_assert_set_hmac_salt(fido_assert_t *assert, const unsigned char *salt, in fido_assert_set_hmac_salt() argument
649 fido_blob_set(&assert->ext.hmac_salt, salt, salt_len) < 0) in fido_assert_set_hmac_salt()
656 fido_assert_set_hmac_secret(fido_assert_t *assert, size_t idx, in fido_assert_set_hmac_secret() argument
659 if (idx >= assert->stmt_len || (secret_len != 32 && secret_len != 64) || in fido_assert_set_hmac_secret()
660 fido_blob_set(&assert->stmt[idx].hmac_secret, secret, in fido_assert_set_hmac_secret()
668 fido_assert_set_rp(fido_assert_t *assert, const char *id) in fido_assert_set_rp() argument
670 if (assert->rp_id != NULL) { in fido_assert_set_rp()
671 free(assert->rp_id); in fido_assert_set_rp()
672 assert->rp_id = NULL; in fido_assert_set_rp()
678 if ((assert->rp_id = strdup(id)) == NULL) in fido_assert_set_rp()
685 fido_assert_allow_cred(fido_assert_t *assert, const unsigned char *ptr, in fido_assert_allow_cred() argument
694 if (assert->allow_list.len == SIZE_MAX) { in fido_assert_allow_cred()
700 recallocarray(assert->allow_list.ptr, assert->allow_list.len, in fido_assert_allow_cred()
701 assert->allow_list.len + 1, sizeof(fido_blob_t))) == NULL) { in fido_assert_allow_cred()
706 list_ptr[assert->allow_list.len++] = id; in fido_assert_allow_cred()
707 assert->allow_list.ptr = list_ptr; in fido_assert_allow_cred()
718 fido_assert_set_extensions(fido_assert_t *assert, int ext) in fido_assert_set_extensions() argument
721 assert->ext.mask = 0; in fido_assert_set_extensions()
725 assert->ext.mask |= ext; in fido_assert_set_extensions()
732 fido_assert_set_options(fido_assert_t *assert, bool up, bool uv) in fido_assert_set_options() argument
734 assert->up = up ? FIDO_OPT_TRUE : FIDO_OPT_FALSE; in fido_assert_set_options()
735 assert->uv = uv ? FIDO_OPT_TRUE : FIDO_OPT_FALSE; in fido_assert_set_options()
741 fido_assert_set_up(fido_assert_t *assert, fido_opt_t up) in fido_assert_set_up() argument
743 assert->up = up; in fido_assert_set_up()
749 fido_assert_set_uv(fido_assert_t *assert, fido_opt_t uv) in fido_assert_set_uv() argument
751 assert->uv = uv; in fido_assert_set_uv()
757 fido_assert_clientdata_hash_ptr(const fido_assert_t *assert) in fido_assert_clientdata_hash_ptr() argument
759 return (assert->cdh.ptr); in fido_assert_clientdata_hash_ptr()
763 fido_assert_clientdata_hash_len(const fido_assert_t *assert) in fido_assert_clientdata_hash_len() argument
765 return (assert->cdh.len); in fido_assert_clientdata_hash_len()
775 fido_assert_reset_tx(fido_assert_t *assert) in fido_assert_reset_tx() argument
777 free(assert->rp_id); in fido_assert_reset_tx()
778 fido_blob_reset(&assert->cd); in fido_assert_reset_tx()
779 fido_blob_reset(&assert->cdh); in fido_assert_reset_tx()
780 fido_blob_reset(&assert->ext.hmac_salt); in fido_assert_reset_tx()
781 fido_free_blob_array(&assert->allow_list); in fido_assert_reset_tx()
782 memset(&assert->ext, 0, sizeof(assert->ext)); in fido_assert_reset_tx()
783 memset(&assert->allow_list, 0, sizeof(assert->allow_list)); in fido_assert_reset_tx()
784 assert->rp_id = NULL; in fido_assert_reset_tx()
785 assert->up = FIDO_OPT_OMIT; in fido_assert_reset_tx()
786 assert->uv = FIDO_OPT_OMIT; in fido_assert_reset_tx()
797 fido_assert_reset_rx(fido_assert_t *assert) in fido_assert_reset_rx() argument
799 for (size_t i = 0; i < assert->stmt_cnt; i++) { in fido_assert_reset_rx()
800 free(assert->stmt[i].user.icon); in fido_assert_reset_rx()
801 free(assert->stmt[i].user.name); in fido_assert_reset_rx()
802 free(assert->stmt[i].user.display_name); in fido_assert_reset_rx()
803 fido_blob_reset(&assert->stmt[i].user.id); in fido_assert_reset_rx()
804 fido_blob_reset(&assert->stmt[i].id); in fido_assert_reset_rx()
805 fido_blob_reset(&assert->stmt[i].hmac_secret); in fido_assert_reset_rx()
806 fido_blob_reset(&assert->stmt[i].authdata_cbor); in fido_assert_reset_rx()
807 fido_blob_reset(&assert->stmt[i].largeblob_key); in fido_assert_reset_rx()
808 fido_blob_reset(&assert->stmt[i].sig); in fido_assert_reset_rx()
809 fido_assert_reset_extattr(&assert->stmt[i].authdata_ext); in fido_assert_reset_rx()
810 memset(&assert->stmt[i], 0, sizeof(assert->stmt[i])); in fido_assert_reset_rx()
812 free(assert->stmt); in fido_assert_reset_rx()
813 assert->stmt = NULL; in fido_assert_reset_rx()
814 assert->stmt_len = 0; in fido_assert_reset_rx()
815 assert->stmt_cnt = 0; in fido_assert_reset_rx()
821 fido_assert_t *assert; in fido_assert_free() local
823 if (assert_p == NULL || (assert = *assert_p) == NULL) in fido_assert_free()
825 fido_assert_reset_tx(assert); in fido_assert_free()
826 fido_assert_reset_rx(assert); in fido_assert_free()
827 free(assert); in fido_assert_free()
832 fido_assert_count(const fido_assert_t *assert) in fido_assert_count() argument
834 return (assert->stmt_len); in fido_assert_count()
838 fido_assert_rp_id(const fido_assert_t *assert) in fido_assert_rp_id() argument
840 return (assert->rp_id); in fido_assert_rp_id()
844 fido_assert_flags(const fido_assert_t *assert, size_t idx) in fido_assert_flags() argument
846 if (idx >= assert->stmt_len) in fido_assert_flags()
849 return (assert->stmt[idx].authdata.flags); in fido_assert_flags()
853 fido_assert_sigcount(const fido_assert_t *assert, size_t idx) in fido_assert_sigcount() argument
855 if (idx >= assert->stmt_len) in fido_assert_sigcount()
858 return (assert->stmt[idx].authdata.sigcount); in fido_assert_sigcount()
862 fido_assert_authdata_ptr(const fido_assert_t *assert, size_t idx) in fido_assert_authdata_ptr() argument
864 if (idx >= assert->stmt_len) in fido_assert_authdata_ptr()
867 return (assert->stmt[idx].authdata_cbor.ptr); in fido_assert_authdata_ptr()
871 fido_assert_authdata_len(const fido_assert_t *assert, size_t idx) in fido_assert_authdata_len() argument
873 if (idx >= assert->stmt_len) in fido_assert_authdata_len()
876 return (assert->stmt[idx].authdata_cbor.len); in fido_assert_authdata_len()
880 fido_assert_sig_ptr(const fido_assert_t *assert, size_t idx) in fido_assert_sig_ptr() argument
882 if (idx >= assert->stmt_len) in fido_assert_sig_ptr()
885 return (assert->stmt[idx].sig.ptr); in fido_assert_sig_ptr()
889 fido_assert_sig_len(const fido_assert_t *assert, size_t idx) in fido_assert_sig_len() argument
891 if (idx >= assert->stmt_len) in fido_assert_sig_len()
894 return (assert->stmt[idx].sig.len); in fido_assert_sig_len()
898 fido_assert_id_ptr(const fido_assert_t *assert, size_t idx) in fido_assert_id_ptr() argument
900 if (idx >= assert->stmt_len) in fido_assert_id_ptr()
903 return (assert->stmt[idx].id.ptr); in fido_assert_id_ptr()
907 fido_assert_id_len(const fido_assert_t *assert, size_t idx) in fido_assert_id_len() argument
909 if (idx >= assert->stmt_len) in fido_assert_id_len()
912 return (assert->stmt[idx].id.len); in fido_assert_id_len()
916 fido_assert_user_id_ptr(const fido_assert_t *assert, size_t idx) in fido_assert_user_id_ptr() argument
918 if (idx >= assert->stmt_len) in fido_assert_user_id_ptr()
921 return (assert->stmt[idx].user.id.ptr); in fido_assert_user_id_ptr()
925 fido_assert_user_id_len(const fido_assert_t *assert, size_t idx) in fido_assert_user_id_len() argument
927 if (idx >= assert->stmt_len) in fido_assert_user_id_len()
930 return (assert->stmt[idx].user.id.len); in fido_assert_user_id_len()
934 fido_assert_user_icon(const fido_assert_t *assert, size_t idx) in fido_assert_user_icon() argument
936 if (idx >= assert->stmt_len) in fido_assert_user_icon()
939 return (assert->stmt[idx].user.icon); in fido_assert_user_icon()
943 fido_assert_user_name(const fido_assert_t *assert, size_t idx) in fido_assert_user_name() argument
945 if (idx >= assert->stmt_len) in fido_assert_user_name()
948 return (assert->stmt[idx].user.name); in fido_assert_user_name()
952 fido_assert_user_display_name(const fido_assert_t *assert, size_t idx) in fido_assert_user_display_name() argument
954 if (idx >= assert->stmt_len) in fido_assert_user_display_name()
957 return (assert->stmt[idx].user.display_name); in fido_assert_user_display_name()
961 fido_assert_hmac_secret_ptr(const fido_assert_t *assert, size_t idx) in fido_assert_hmac_secret_ptr() argument
963 if (idx >= assert->stmt_len) in fido_assert_hmac_secret_ptr()
966 return (assert->stmt[idx].hmac_secret.ptr); in fido_assert_hmac_secret_ptr()
970 fido_assert_hmac_secret_len(const fido_assert_t *assert, size_t idx) in fido_assert_hmac_secret_len() argument
972 if (idx >= assert->stmt_len) in fido_assert_hmac_secret_len()
975 return (assert->stmt[idx].hmac_secret.len); in fido_assert_hmac_secret_len()
979 fido_assert_largeblob_key_ptr(const fido_assert_t *assert, size_t idx) in fido_assert_largeblob_key_ptr() argument
981 if (idx >= assert->stmt_len) in fido_assert_largeblob_key_ptr()
984 return (assert->stmt[idx].largeblob_key.ptr); in fido_assert_largeblob_key_ptr()
988 fido_assert_largeblob_key_len(const fido_assert_t *assert, size_t idx) in fido_assert_largeblob_key_len() argument
990 if (idx >= assert->stmt_len) in fido_assert_largeblob_key_len()
993 return (assert->stmt[idx].largeblob_key.len); in fido_assert_largeblob_key_len()
997 fido_assert_blob_ptr(const fido_assert_t *assert, size_t idx) in fido_assert_blob_ptr() argument
999 if (idx >= assert->stmt_len) in fido_assert_blob_ptr()
1002 return (assert->stmt[idx].authdata_ext.blob.ptr); in fido_assert_blob_ptr()
1006 fido_assert_blob_len(const fido_assert_t *assert, size_t idx) in fido_assert_blob_len() argument
1008 if (idx >= assert->stmt_len) in fido_assert_blob_len()
1011 return (assert->stmt[idx].authdata_ext.blob.len); in fido_assert_blob_len()
1023 fido_assert_set_authdata(fido_assert_t *assert, size_t idx, in fido_assert_set_authdata() argument
1031 if (idx >= assert->stmt_len || ptr == NULL || len == 0) in fido_assert_set_authdata()
1034 stmt = &assert->stmt[idx]; in fido_assert_set_authdata()
1062 fido_assert_set_authdata_raw(fido_assert_t *assert, size_t idx, in fido_assert_set_authdata_raw() argument
1069 if (idx >= assert->stmt_len || ptr == NULL || len == 0) in fido_assert_set_authdata_raw()
1072 stmt = &assert->stmt[idx]; in fido_assert_set_authdata_raw()
1113 fido_assert_set_count(fido_assert_t *assert, size_t n) in fido_assert_set_count() argument
1124 new_stmt = recallocarray(assert->stmt, assert->stmt_cnt, n, in fido_assert_set_count()
1129 assert->stmt = new_stmt; in fido_assert_set_count()
1130 assert->stmt_cnt = n; in fido_assert_set_count()
1131 assert->stmt_len = n; in fido_assert_set_count()