{"id":20429038,"url":"https://github.com/pp3345/ykdroid","last_synced_at":"2025-04-12T19:43:39.362Z","repository":{"id":53263996,"uuid":"105374901","full_name":"pp3345/ykDroid","owner":"pp3345","description":"YubiKey challenge-response USB and NFC driver for Android","archived":false,"fork":false,"pushed_at":"2023-06-04T11:32:14.000Z","size":242,"stargazers_count":99,"open_issues_count":9,"forks_count":15,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-03-09T22:26:31.436Z","etag":null,"topics":["android","challenge-response","keepass","keepass2android","nfc","usb","yubikey"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pp3345.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2017-09-30T14:20:49.000Z","updated_at":"2025-03-05T21:46:40.000Z","dependencies_parsed_at":"2024-01-15T15:28:48.731Z","dependency_job_id":"a0c24d42-be01-4b4a-8603-6597e228daf8","html_url":"https://github.com/pp3345/ykDroid","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pp3345%2FykDroid","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pp3345%2FykDroid/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pp3345%2FykDroid/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pp3345%2FykDroid/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pp3345","download_url":"https://codeload.github.com/pp3345/ykDroid/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248625479,"owners_count":21135512,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","challenge-response","keepass","keepass2android","nfc","usb","yubikey"],"created_at":"2024-11-15T07:32:42.043Z","updated_at":"2025-04-12T19:43:39.322Z","avatar_url":"https://github.com/pp3345.png","language":"Java","readme":"# ykDroid\n\nykDroid is an Android app that provides an interface for integrating the challenge-response functionality\nof YubiKeys into other apps. Both USB and NFC (YubiKey NEO required for NFC) are supported on compatible devices.\n\n[\u003cimg src=\"https://play.google.com/intl/en_us/badges/images/generic/en-play-badge.png\"\n     alt=\"Get it on Google Play\"\n     height=\"80\"\u003e](https://play.google.com/store/apps/details?id=net.pp3345.ykdroid)\n[\u003cimg src=\"https://fdroid.gitlab.io/artwork/badge/get-it-on.png\"\n     alt=\"Get it on F-Droid\"\n     height=\"80\"\u003e](https://f-droid.org/packages/net.pp3345.ykdroid/)\n\n## Integration\nykDroid provides an [Intent](https://developer.android.com/reference/android/content/Intent.html) called\n`net.pp3345.ykdroid.intent.action.CHALLENGE_RESPONSE`, which accepts an extra `byte[] challenge` and returns an extra\n`byte[] response`. Optionally, an extra `String purpose` may be passed additionally in the intent to identify the purpose\nof the challenge. ykDroid will use this identifier to remember and pre-select the slot used for each purpose.\n\nUpon invocation, ykDroid will automatically detect which connection methods (USB and/or NFC) are available and show a dialog\noverlay with instructions to the user.\n\nExample code:\n```java\nprivate static final int CHALLENGE_RESPONSE_REQUEST_CODE = 12345;\n\nprivate void startChallengeResponse(final byte[] challenge) {\n    final Intent intent = new Intent(\"net.pp3345.ykdroid.intent.action.CHALLENGE_RESPONSE\");\n    intent.putExtra(\"challenge\", challenge);\n    intent.putExtra(\"purpose\", \"some-unique-purpose-identifier\"); // optional\n\n    startActivityForResult(intent, CHALLENGE_RESPONSE_REQUEST_CODE);\n}\n\npublic void onActivityResult(final int requestCode, final int resultCode, final Intent data) {\n    if(requestCode == CHALLENGE_RESPONSE_REQUEST_CODE \u0026\u0026 resultCode == RESULT_OK) {\n        final byte[] response = data.getByteArrayExtra(\"response\");\n        // ...\n    }\n}\n```\n\n## Apps that integrate ykDroid\n* [Keepass2Android](https://play.google.com/store/apps/details?id=keepass2android.keepass2android) - Password manager\n  app compatible with KeePass\n* [ykpass](https://github.com/noliran/ykpass) - Password app that derives passwords directly from the YubiKey's response value\n\n## Contributing\nPRs welcome! I am open for adding more YubiKey functionality, but bugfixes and additional translations are also very\nappreciated :-)\n\n## Bugs \u0026 issues\nPlease use the GitHub issue tracker for reporting bugs and feature requests.\n\n## Notice\nYubico and YubiKey are registered trademarks of Yubico. Google Play and the Google Play logo are trademarks of Google LLC.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpp3345%2Fykdroid","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpp3345%2Fykdroid","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpp3345%2Fykdroid/lists"}