--- tags: aries --- # Indy SDK method dependencies ## Crypto `create_key` - `crypto_service.create_key` - `wallet_service.add_indy_object` (pub/priv key) `crypto_sign` - `crypto_service.validate_key` (NYI) - `wallet_service.get_indy_object` (key by verkey) - `crypto_service.sign` (uses libsodium) `crypto_verify` - `crypto_service.validate_key` (NYI) - `crypto_service.verify` (uses libsodium) `set_key_metadata` - `crypto_service.validate_key` (NYI) - `wallet_service.upsert_indy_object` (metadata) `get_key_metadata` - `crypto_service.validate_key` (NYI) - `wallet_service.get_indy_object` (metadata) `pack_msg` - `wallet_service.get_indy_object` (sender vk) - `crypto_service.validate_key` (NYI) - for each recipient verkey - `crypto_service.crypto_box` (uses libsodium) - `crypto_service.crypto_box_seal` (uses libsodium) - `crypto_service.encrypt_plaintext` (uses libsodium) `unpack_msg` - `wallet_service.get_indy_object` (each recipient key) - `wallet_service.get_indy_object` (private key) - `crypto_service.crypto_box_seal_open` (uses libsodium) - `crypto_service.crypto_box_open` (uses libsodium) - `crypto_service.decrypt_ciphertext` (uses libsodium) ## DID `create_and_store_my_did` - `crypto_service.create_my_did` - `wallet_service.get_indy_object` (check DID exists) - `wallet_service.add_indy_object` (new DID; verkey) `replace_keys_start`, `replace_keys_apply` `store_their_did` - `crypto_service.create_their_did` - `wallet_service.add_indy_object` (their DID) `get_my_did_with_meta` - `wallet_service.get_indy_object` (DID; DID metadata; temp verkey) `list_my_dids_with_meta` - `wallet_service.search_indy_records` - fetch each record - `wallet_service.get_indy_opt_object` (each DID metadata; temp verkey) `key_for_did` - `crypto_service.validate_did` (NYI) - `wallet_service.get_indy_object` (check my DID) - `wallet_service.get_indy_object` (check their DID) -> **may go to ledger service to fetch DID** `key_for_local_did` - `crypto_service.validate_did` (NYI) - `wallet_service.get_indy_object` (check my DID) - `wallet_service.get_indy_object` (check their DID) `set_endpoint_for_did` - `crypto_service.validate_did` (NYI) - `wallet_service.upsert_indy_object` (endpoint) `get_endpoint_for_did` - `crypto_service.validate_did` (NYI) - `wallet_service.get_indy_object` (endpoint) -> **may go to ledger service to fetch endpoint** `set_did_metadata` - `crypto_service.validate_did` (NYI) - `wallet_service.upsert_indy_object` (metadata) `get_did_metadata` - `crypto_service.validate_did` (NYI) - `wallet_service.get_indy_object` (metadata) `abbreviate_verkey` `qualify_did` ## Holder/Prover `create_master_secret` - `wallet_service.record_exists` (check if ID exists already) - `anoncreds_service.prover.new_master_secret` - `wallet_service.add_indy_object` (new master secret) `create_credential_req` - `wallet_service.get_indy_record` (master secret) - `anoncreds_service.prover.new_credential_request` (uses master secret) `store_credential` - `wallet_service.get_indy_record` (master secret) - `anoncreds_service.prover.process_credential` (uses master secret) - `anoncreds_service.prover.build_credential_tags` - `wallet_service.add_indy_object` (credential + tags) `get_credential` - `wallet_service.get_indy_object` (cred ID) `search_credentials`, `fetch_credentials` - `wallet_service.search_indy_records` (query JSON) - fetch records from search results `search_credentials_for_proof_req` - `anoncreds_service.prover.extend_proof_request_restrictions` - `wallet_service.search_indy_records` - `anoncreds_service.prover.get_credential_values_for_attribute` - `anoncreds_service.prover.attribute_satisfy_predicate` `delete_credential` - `wallet_service.delete_indy_record` (cred ID) `create_proof` (+ master secret ID) - `wallet_service.get_indy_record` (master secret) - `wallet_service.get_indy_object` (each cred ID) - `anoncreds_service.prover.create_proof` (uses master secret) ## Issuer `create_schema` - `crypto_service.validate_did` `create_and_store_credential_def` - `wallet_service.get_indy_record_value` (cred def) - `anoncreds_service.issuer.new_credential_definition` (uses ursa) - `wallet_service.add_indy_object` (cred def; private key; correctness proof; schema) - `wallet_service.add_record` (schema ID for cred def, to be removed) `create_and_store_revocation_registry` - `wallet_service.get_indy_record_value` (revoc reg def; revoc reg; cred def) - `anoncreds_service.issuer.new_revocation_registry` (uses ursa) - `blob_storage` (write tails file) - `wallet_service.add_indy_object` (revoc reg def; revoc reg private; revoc reg; revoc reg info) `create_credential_offer` - `wallet_service.get_indy_object` (cred def correctness proof; schema ID from cred def) `create_credential` - `wallet_service.get_indy_object` (cred def; cred def private key) - `wallet_service.get_indy_object` (revoc reg def; revoc reg private; revoc reg; revoc reg info) - `blob_storage` (read tails file) - `anoncreds_service.issuer.new_credential` (uses ursa) - `wallet_service.update_indy_object` (revoc reg; revoc reg info) `revoke_credential` (similar to `create_credential`) ## Ledger `sign_request` - `wallet_service.get_indy_object` (DID; verkey) - `crypto_service.sign` (uses libsodium) `submit_request` - `pool_service.send_tx` (various request building methods) - `crypto_service.validate_did` (NYI) - `ledger_service` build request (various response parsing methods) - `ledger_service` parse response ## Non-Secrets `add_record` -> `wallet_service.add_record` `update_record_value` -> `wallet_service.update_record_value` `update_record_tags` -> `wallet_service.update_record_tags` `add_record_tags` -> `wallet_service.add_record_tags `delete_record_tags` -> `wallet_service.delete_record_tags` `delete_record` -> `wallet_record.delete_record` `get_record` -> `wallet_record.get_record` `open_search` -> `wallet_record.search_records` `fetch_search_next_records` -> ... `close_search` ## Payments (skipped) ## Pool requires web access to the ledger itself `create`, `delete`, `list`, `close` - requires storage for configuration, currently filesystem `open` - creates new pool instance with a ZMQ command socket - creates pair of ZMQ sockets to send and receive messages from pool - sends connect command to pool `refresh` - sends refresh command to pool ## Verifier `verify_proof` - `anoncreds_service.verifier.verify` -> seems no direct wallet or ledger access `generate_nonce` - `anoncreds_service.verifier.generate_nonce` -> ursa `new_nonce` ## Wallet `create` - `calc_master_key` (raw or calc argon2i hash) - `wallet_service.create_wallet` `open` - `wallet_service.open_wallet_prepare` - `calc_master_key` (raw or calc argon2i hash) - may rekey - `wallet_service.open_wallet_continue` `delete` - `wallet_service.delete_wallet_prepare` - `calc_master_key` (raw or calc argon2i hash) - `wallet_service.delete_wallet_continue` `export`, `import`